1.特殊的类属性
对任何类,都有下面特殊属性:
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的实例~
6. __init__
创建完对象后调用,对实例进行初始化,没有返回值。
class C1:
def __init__(self, n):
self.x = n
7. __new__
创建对象时调用,返回当前类的实例。在__init__方法前执行。
8. 内置函数 hasattr(Myclass, 'attribute') :判断Myclass类是否有属性attribute。