对任何类,都有下面特殊属性:
C.__name__ | 类C的名字(字符串) |
C.__doc__ | 类C的文档字符串 |
C.__bases__ | 类C的所有父类组成的元组 |
C.__dict__ | 类C的属性 |
C.__module__ | 类C定义所在的模块 |
C.__class__ | 实例C对应的类 |
IDLE 2.6 >>> class MyClass:pass >>> MyClass.__name__ 'MyClass' >>> MyClass.__doc__ >>> MyClass.__bases__ () >>> MyClass.__dict__ {'__module__': '__main__', '__doc__': None} >>> MyClass.__class__ Traceback (most recent call last): File "<pyshell#7>", line 1, in <module> MyClass.__class__ AttributeError: class MyClass has no attribute '__class__' >>> myClass = MyClass() >>> myClass.__class__ <class __main__.MyClass at 0x01C07570> >>> MyClass.__module__ '__main__'
MyClass.__dict__["z"] = 10 等价于 MyClass.z = 10
>>> MyClass.__dict__['z'] = 10 >>> MyClass.z 10 >>> MyClass.z = 12 >>> MyClass.z 12 >>> MyClass.__dict__ {'__module__': '__main__', 'z': 12, '__doc__': None} >>> myClass.z 12
2.对于包含在类体中的语句,要想引用该类的属性,必须使用属性的简单名称,而不是完整名称。但是,在类体中定义的方法中的语句中,要想引用类的属性,必须使用完整名称,而不是简单名称。
class C1: x = 10 y = x +4 def test(self): print C1.x
3.类私有变量:双下划线开头,但不以下划线结束。
4. 内置函数 issubclass(subclass, baseclass):判断 subclass是否是baseclass的子类~
5. 内置函数 isinstance(instance, C):判断instance是否是类C的实例~
创建完对象后调用,对实例进行初始化,没有返回值。
class C1: def __init__(self, n): self.x = n
创建对象时调用,返回当前类的实例。在__init__方法前执行。
8. 内置函数 hasattr(Myclass, 'attribute') :判断Myclass类是否有属性attribute。