组合
反射(通过字符串来操作属性)
getattr
setattr
hasattr
delattr
魔术方法(内置方法,双下划线开头的方法)
异常
——————————————————————————————————————————————————————————
什么是组合? 组合就是,一个对象拥有一个属性,该属性的值是另外一个对象
.
———————————————————————————————————————————————————————————
getattr(object, name[, default])
: 获取对象属性值,如果属性不存在则返回默认值(可选)。setattr(object, name, value)
: 设置对象属性值。hasattr(object, name)
: 判断对象是否有属性。
—————————————————————————————————————————内置魔术
双下划线开头得方法,满足一定的条件就会自动触发,
__init__:类实例化时自动执行,无需调用
__del__:构造器,当一个实例被销毁时自动执行,无需调用
__str__, 返回值必须是字符串形式
__repr__ 同时存在时 str 优先级高
当未定义__str__和__repr__方法时,print实例时输出的是实例的地址;当定义上述两种方法时,输出的是其返回值,并且__str__方法优先级高于__repr__方法即同时定义两种方法,只执行__str__方法。
关于两种方法的区别,__repr__方法的目的是准确性,其结果是让解释器用的;__str__方法的目的是可读性
__doc__无法继承
__enter__,__exit__
为了让一个对象兼容with语句,必须在这个对象的类中声明__enter__,__exit__ 方法
1.什么是with?
with是一种上下文管理协议,包含方法 __enter__() 和 __exit__(),支持该协议的对象要实现这两个方法。
2.为什么要用with?
有一些任务,可能事先需要设置,事后做清理工作。对于这种场景,Python的with语句提供了一种非常方便的处理方式。一个很好的例子是文件处理,你需要获取一个文件句柄,从文件中读取数据,然后关闭文件句柄。
正常情况下我们处理一个文件要打开,读取,然后关闭。这就有可能会出现两个问题
文件读取时发生异常,但是我们没有进行处理
忘记关闭文件
当前我们可以用try,except ,finally来进行操作,但是代码过于冗杂,这时我们就可以用with了。
__setatter__
__delatter__
__getatter__
__setitem__
__getitem__
__delitem__
标签:__,对象,repr,python31days,str,方法,属性 From: https://www.cnblogs.com/wzh366/p/17755248.html