Python之类的特殊成员方法

    xiaoxiao2022-06-23  176

    Python之类的特殊成员方法

    类的特殊成员方法

     

     

     

    1.__doc__ :打印类的描述信息

    class Foo: """ 描述类信息,这是用于看片的神奇 """ def func(self): pass print Foo.__doc__ #输出:类的描述信息

     

    2.__module__:表示当前操作的对象在那个模块

    class C: def __init__(self): self.name = 'wupeiqi'

     

    3.__class__:表示当前操作的对象的类是什么

    from lib.aa import C obj = C() print obj.__module__ # 输出 lib.aa,即:输出模块 print obj.__class__ # 输出 lib.aa.C,即:输出类

     

    4. __init__ :构造方法,通过类创建对象时,自动触发执行

    class Role(object): #初始化函数,在生成一个角色时要 初始化的一些属性就填写在这里 def __init__(self,name,role,weapon,life_value=100,money=15000): #__init__中的第一个参数self,和这里的self都 是什么意思? 看下面解释 self.name = name self.role = role

     

    5.__del__:析构方法,当对象在内存中被释放时,自动触发执行

    class Role(object): def __init__(self,name,role,weapon: self.name = name self.role = role self.weapon = weapon def __del__(self): #析构函数 print("del.....run...") r1 = Role('Alex','police','AK47') #生成一个角色  

     

    6.__call__:对象后面加括号,触发执行

      #注:构造方法的执行是由创建对象触发的,即:对象 = 类名() ;而对于 __call__ 方法的执行是由对象后加括号触发的,即:对象() 或者 类()() class Foo: def __init__(self): pass def __call__(self, *args, **kwargs): print '__call__' obj = Foo() # 执行 __init__ obj() # 执行 __call__  

     

    7.__dict__:查看类或对象中的所有成员

    print(类.__dict__) # 打印类里所有属性,不包括实例属性 print(实例.__dict__) #打印实例所有属性,不包括类属性

     

    8.__str__:如果一个类中定义了__str__方法,那么在打印 对象 时,默认输出该方法的返回值

      class Foo: def __str__(self): return 'alex li' obj = Foo() print obj # 输出:alex li  

     

    9.__getitem__、__setitem__、__delitem__:

    注:用于索引操作,如字典。以上分别表示获取、设置、删除数据

      class Foo(object): def __getitem__(self, key): print('__getitem__',key) def __setitem__(self, key, value): print('__setitem__',key,value) def __delitem__(self, key): print('__delitem__',key) obj = Foo() result = obj['k1'] # 自动触发执行 __getitem__ obj['k2'] = 'alex' # 自动触发执行 __setitem__ del obj['k1']  

     

    10.__new__\__metaclass__ *(自定义类)

    __new__:是用来创建实例的,对类实例化之前进行定制,可以用到。

    __metaclass__:定义一个类如何被创建

    类的生成 调用 顺序依次是 __new__ --> __init__ --> __call__

    #创建类特殊方式 def func(self): print(self.name,self.age) def __init__(self,name,age): self.name = name self.age = age #通过Type实例化产生的Foo类,Foo是Type的对象。 #(object,)加入“,”是为了让括号知道他是个元组。 #type第一个参数:类名 #type第二个参数:当前类的基类 #type第三个参数:类的成员 Foo = type('Foo',(object,),{'talk':func, '__init__':__init__}) f= Foo("Chrn",22) f.talk() print(type(Foo)) #Type 为 类的类,所有类都是Type创建的

     

    posted @ 2019-05-21 09:13 卿先生 阅读( ...) 评论( ...) 编辑 收藏

    最新回复(0)