类和模块的特殊属性和方法
2019-04-22 本文已影响15人
爱折腾的大懒猪
Python一切皆对象(object),每个对象都可能有多个属性(attribute)。Python的属性有一套统一的管理方案。
- 对象的属性可能来自于其类定义,叫做类属性(class attribute)。 类属性可能来自类定义自身,也可能根据类定义继承来的。
- 一个对象的属性还可能是该对象实例定义的,叫做对象属性(object attribute)。
- 对象的属性储存在对象的
__dict__
属性中。__dict__
为一个词典,键为属性名,对应的值为属性本身。
判断对象是否有指定属性:
-
hasattr(obj,attr)
: 返回真假(通过getattr异常与否来实现) -
dir(obj)
: 列出对象现有属性 - 通过
try: obj.attr_name; except AttributeError: pass
属性
-
__doc__
: 帮助说明, 将字符串写在对象定义声明之下. -
__module__
: 模组名,就是文件的名字(无后缀)部分 -
__class__
: 返回对象的类信息 -
__dict__
: 储存对象属性/方法的字典. -
__slots__
: 设置一个元组,限定允许绑定的属性名称(不能动态添加以外的属性). 只能对当前类起效, 对子类不起效(除非在子类中也定义__slots__
,这样,子类允许定义的属性就是自身的__slots__
加上父类的__slots__
。)