aa.py
class C(): def __init__(self): self.name='QiZhiguang'
类的特殊成员方法:
# 1. __doc__ 表示类的描述信息 class Dog(object): '''描述信息:这个类是描述狗这个对象的''' def __init__(self,name): self.name=name def talk(self): print('吃饱了') print(Dog.__doc__)#不用实例化 # 2. __module__ 和 __class__ # __module__ 表示当前操作的对象在那个模块 # __class__ 表示当前操作的对象的类是什么 from lib.aa import C obj=C() print(obj.__module__) #输出 lib.aa 即:输出模块 print(obj.__class__) #输出 lib.aa.C 即:输出类 # 3. __init__ 构造方法,通过类创建对象时,自动触发执行。 # 4.__del__ # 析构方法,当对象在内存中被释放时,自动触发执行。 # 注:此方法一般无须定义,因为Python是一门高级语言,程序员在使用时无需关心内存的分配和释放,因为此工作都是交给Python解释器来执行,所以,析构函数的调用是由解释器在进行垃圾回收时自动触发执行的 # 5. __call__ 对象后面加括号,触发执行。 # 注:构造方法的执行是由创建对象触发的,即:对象 = 类名() ;而对于 __call__ 方法的执行是由对象后加括号触发的,即:对象() 或者 类()() class Dog(object): def __init__(self,name): self.name=name def talk(self): print('吃饱了') def __call__(self, *args, **kwargs): print('running call') print(args,kwargs) d=Dog('huzi') d() d(123,name=333) Dog('huzi')() Dog('huzi')(123,name=333) # 6. __dict__ 查看类或对象中的所有成员 class Cat(object): n=13 def __init__(self,name): self.name=name self.__food=None def eat(self): print('eating') print(Dog.__dict__)#把上述类中所有的方法以字典形式打印出来,打印类里所有属性,不包括实例属性 c=Cat('白静怡') print(c.__dict__)#打印所有实例属性,不包括类属性 print(c)#打印的只是内存地址,功能变化下#7 #7.__str__ 如果一个类中定义了__str__方法,那么在打印对象时,默认输出该方法的返回值。 class Cat(object): def __init__(self,name): self.name=name def eat(self): print('eating') def __str__(self): return '<obj:%s>'%self.name c=Cat('白静怡') print(c) # 8.__getitem__、__setitem__、__delitem__ # 用于索引操作,如字典。以上分别表示获取、设置、删除数据 class Foo(object): def __init__(self): self.data={} def __getitem__(self, key): print('__getitem__', key) return self.data.get(key) def __setitem__(self, key, value): print('__setitem__', key, value) self.data[key]=value def __delitem__(self, key): print('__delitem__', key) obj = Foo() obj['name']='qiqi' print(obj['name']) print(obj.data) # result = obj['k1'] # 自动触发执行 __getitem__ # obj['k2'] = 'alex' # 自动触发执行 __setitem__ del obj['k1'] #http://www.cnblogs.com/alex3714/articles/5213184.html