Python类的特殊属性

Python中的特殊属性

定义如下类:

class Foo(object):
    """Foo class definition"""
类的特殊属性都有哪些呢?

__name__

Foo.__name__ 类的名字

__doc__

Foo.__doc__ 类的文档字符串

__bases__

Foo.__bases__ 类的所有父类构成的元组

__dict__

Foo.__dict__ 类的属性

__module__

Foo.__module__ 类定义所在的模块

__class__

Foo.__class__ 类实例所属的类,与type(Foo)返回值相同

示例

如:

print(Foo.__name__)
print(Foo.__doc__)
print(Foo.__bases__)
print(Foo.__dict__)
print(Foo.__module__)
print(Foo.__class__)

输出如下:

Foo
Foo class definition
(<class 'object'>,)
{'__weakref__': <attribute '__weakref__' of 'Foo' objects>, '__doc__': 'Foo class definition', '__dict__': <attribute '__dict__' of 'Foo' objects>, '__module__': '__main__'}
__main__
<class 'type'>

说明

__name__常常用在需要得到类的字符串的名字时,使用type(Foo)时会返回类型实例。

__doc__是文档字符串,定义时需要紧跟在class定义的下一行。

__bases__用来处理类继承,它包含了由所有父类组成的元组。

__dict__由类的数据属性组成。访问类的属性时,会搜索该字段,如果在__dict__中没有找到,将会在基类中__dict__中进行搜索,而搜索的基类是按照出现在类定义继承从左到右出现的顺序。对类属性修改只会影响在本类,并不会影响父类中的__dict__。

__module__界定了类所属的模块。

__class__新式类定义此属性,表明类已经是一种类型。


注意

一定不要将类属性与实例属性弄混淆。如:

f = Foo()
print(f.__dict__)

将输出:

{}

因为还没有作为实例的属性。

原文地址:https://www.cnblogs.com/furzoom/p/7710168.html