1.创建一个类(类定义)
class AddrBookEntry(object): # 类定义
'address book entry class'
def __init__(self, nm, ph): # 定义构造器
self.name = nm # 设置 name
self.phone = ph # 设置 phone
print 'Created instance for:', self.name
def updatePhone(self, newph): # 定义方法
self.phone = newph
print 'Updated phone# for:', self.name
对任何类C,表13.1 显示了类C的所有特殊属性:
C.__name__ 类C的名字(字符串)C.__doc__ 类C的文档字符串
C.__bases__ 类C的所有父类构成的元组
C.__dict__ 类C的属性
C.__module__ 类C定义所在的模块(1.5 版本新增)
C.__class__ 实例C对应的类(仅新式类中)
2.__init__() __new__() __del__()
(1) 当类被调用,实例化的第一步是创建实例对象。一旦对象创建了,Python 检查是否实现了__init__()方法。默认情况下,如果没有定义(或覆盖)特殊方法__init__(),对实例不会施加任何特别的操作.任何所需的特定操作,都需要程序员实现__init__(),覆盖它的默认行为。如果__init__()没有实现,则返回它的对象,实例化过程完毕。
(2) 为何我们认为__new__()比__init__()更像构造器呢?这是因为__new__()必须返回一个合法的实例,这样解释器在调用__init__()时,就可以把这个实例作为self 传给它。调用父类的__new__()来创建对象,正像其它语言中使用new 关键字一样。
3.对象的内建函数
issubclass() 布尔函数判断一个类是另一个类的子类或子孙类。它有如下语法:issubclass(sub, sup)
Isinstance() 布尔函数在判定一个对象是否是另一个给定类的实例时,非常有用。它有如下语法:isinstance(obj1, obj2)
hasattr(), getattr(),setattr(), delattr()
4.this ,super,vars()
vars()内建函数与dir()相似,只是给定的对象参数都必须有一个__dict__属性。vars()返回一个字典,它包含了对象存储于其__dict__中的属性(键)及值。