【面向对象】类的特殊成员方法
1. __doc__:表示類的描述信息
class Foo(object):'''描述信息'''def func(self):pass print(Foo.__doc__)>>>描述信息2.?__module__ 和 ?__class__ :
__module__ 表示當(dāng)前操作的對(duì)象在哪個(gè)個(gè)模塊
__class__ ? ? 表示當(dāng)前操作的對(duì)象的類是什么
3. __init__ :構(gòu)造方法,通過類創(chuàng)建對(duì)象時(shí),自動(dòng)觸發(fā)執(zhí)行
4.__del__: 析構(gòu)方法,當(dāng)對(duì)象在內(nèi)存中被釋放時(shí),自動(dòng)觸發(fā)執(zhí)行
5. __call__ :對(duì)象后面加括號(hào),觸發(fā)執(zhí)行
class Foo(object):'''描述信息'''def __call__(self, *args, **kwargs):print('call')a=Foo()# 執(zhí)行 __init__a()?# 執(zhí)行 __call__ >>>call
6. __dict__ :查看類或?qū)ο笾械乃谐蓡T?
通過類調(diào)用:打印類的所有屬性,不包括實(shí)例屬性
class Foo(object):def __init__(self,name,age):self.name=nameself.age=agedef func(self):print('this is a function')print(Foo.__dict__)>>> {'__module__': '__main__', '__init__': <function Foo.__init__ at 0x02FACBB8>, 'func': <function Foo.func at 0x02FACB70>, '__dict__': <attribute '__dict__' of 'Foo' objects>, '__weakref__': <attribute '__weakref__' of 'Foo' objects>, '__doc__': None}通過實(shí)例調(diào)用:打印所有實(shí)例屬性,不包括類屬性
f=Foo('q1ang',25) print(f.__dict__) >>> {'name': 'q1ang', 'age': 25}?7.__str__: 如果一個(gè)類中定義了__str__方法,那么在打印 對(duì)象 時(shí),默認(rèn)輸出該方法的返回值
?
class Foo(object):def __init__(self,name,age):self.name=nameself.age=agedef __str__(self):print('this is a function')return 'return' f=Foo('q1ang',25) print(f) >>> this is a function return8.__getitem__、__setitem__、__delitem__:
用于索引操作,如字典。以上分別表示獲取、設(shè)置、刪除數(shù)據(jù)
class Foo(object):def __getitem__(self, key):#獲取print('__getitem__', key)def __setitem__(self, key, value):#設(shè)置print('__setitem__', key, value)def __delitem__(self, key):#刪除print('__delitem__', key)obj = Foo()result = obj['k1'] # 自動(dòng)觸發(fā)執(zhí)行 __getitem__ obj['k2'] = 'q1ang' # 自動(dòng)觸發(fā)執(zhí)行 __setitem__ del obj['k1'] >>> __getitem__ k1 __setitem__ k2 q1ang __delitem__ k1?9. __new__ \ __metaclass__:
class Foo(object):def __init__(self, name):self.name = namef = Foo('q1ang')print(type(f)) print(type(Foo)) >>> <class '__main__.Foo'> <class 'type'>f對(duì)象是Foo類的一個(gè)實(shí)例,Foo類對(duì)象是 type 類的一個(gè)實(shí)例,即:Foo類對(duì)象 是通過type類的構(gòu)造方法創(chuàng)建
創(chuàng)建類就可以有兩種方式:
普通方式
class Foo(object):def func(self):
print('hello word')
特殊方式:
def func(self):print('hello word')Foo = type('Foo', (object,), {'func': func})?
轉(zhuǎn)載于:https://www.cnblogs.com/q1ang/p/9074763.html
總結(jié)
以上是生活随笔為你收集整理的【面向对象】类的特殊成员方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为何腾讯元宝要进行数据备份?
- 下一篇: eclipse提交Git时忽略文件