日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

面向对象编程(第五篇)

發(fā)布時(shí)間:2024/9/30 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面向对象编程(第五篇) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

__new__

1.調(diào)用特殊方法__new__()創(chuàng)建實(shí)例對象
查找該類對象是否實(shí)現(xiàn)了特殊方法__new__(),如果沒有實(shí)現(xiàn),則去其父類中依次查找,直到類對象object
2.調(diào)用特殊方法__init__()對創(chuàng)建的實(shí)例對象進(jìn)行初始化
__new__()返回的實(shí)例對象會作為實(shí)參數(shù)被自動傳遞給__init__()的第一個(gè)形參self
class Parent(object):def __new__(cls,*args,**kwargs):pass class Child(Parent):def __init__(self,name):pass id(Parent) >2596561457880 id(Child) >2596561481480 class Parent(object):def __new__(cls,*args,**kwargs):print("父類的__new__()被調(diào)用,其形參cls對應(yīng)實(shí)參的id",id(cls))obj = super().__new__(cls)print("創(chuàng)建的實(shí)例對象的id",id(obj))return obj class Child(Parent):def __init__(self,name):print("子類的__new__()被調(diào)用,其形參cls對應(yīng)實(shí)參的id",id(self))self.name = name
子類實(shí)例化,子類把地址傳給父類,父類運(yùn)作,父類再把地址傳給子類
child = Child("Mike") >父類的__new__()被調(diào)用,其形參cls對應(yīng)實(shí)參的id 2596561451272 創(chuàng)建的實(shí)例對象的id 2596568411608 子類的__new__()被調(diào)用,其形參cls對應(yīng)實(shí)參的id 2596568411608 print("父類Parent的id:",id(Parent)) print("子類Child的id:",id(Child)) print("創(chuàng)建的實(shí)例對象的id:",id(child)) >父類Parent的id: 2596561482424 子類Child的id: 2596561451272 創(chuàng)建的實(shí)例對象的id: 2596568411608

__getitem__(),__setitem__(),__delitem__()

如果想讓自定義類對象的實(shí)例對象可以像列表和字典那樣,使用中括號語法來操作數(shù)據(jù)
1.getitem(self,key)
當(dāng)執(zhí)行操作obj[key]時(shí),會自動調(diào)用該特殊方法
2.setitem(self,key,value)
當(dāng)執(zhí)行操作obj[key] = value時(shí),會自動調(diào)用該特殊方法
3.delitem(self,key)
當(dāng)執(zhí)行操作del obj[key]時(shí),會自動調(diào)用該特殊方法
class MyDict(object):def __init__(self):self.data = {}def __getitem__(self,key):return self.data[key]def __setitem__(self,key ,value):self.data[key] = valuedef __delitem__(self,key):del self.data[key] md = MyDict() md["one"] = 18 md["two"] = 32 print(md.data) >{'one': 18, 'two': 32}
刪除
del md["two"] print(md.data) >{'one': 18}

call()

如果在類對象中實(shí)現(xiàn)了特殊方法__call__(),那么就可以像調(diào)用函數(shù)一樣直接調(diào)用這個(gè)類對象的實(shí)例對象,從而會自動調(diào)用特殊方法__call__()。
class MyClass(object):def __call__(self,*args,**kwargs):print(args,kwargs) mc = MyClass() mc() >() {} mc(1,2,x=3,y=4) >(1, 2) {'x': 3, 'y': 4}
內(nèi)置函數(shù)callable用于判斷指定對象是否是可調(diào)用的。
除了函數(shù)對象是可調(diào)用的之外,對于實(shí)現(xiàn)了特殊方法__call__()的類對象,其實(shí)例對象也是可以調(diào)用的。
#內(nèi)置函數(shù) callable(print) >True #自定義函數(shù) def my_fun():pass print(callable(my_fun)) >True #實(shí)現(xiàn)了特殊方法__call__()的類對象,其實(shí)例對象也是可以調(diào)用的。 print(callable(MyClass)) >True

__doc__

通過類對象的特殊屬性__doc__可以訪問類對象的文檔字符串
class MyClass(object):"""123"""def __call__(self,*args,**kwargs):print(args,kwargs) mc = MyClass() mc() print(MyClass.__doc__) > 123

特殊屬性__slots__

如果想要對實(shí)例對象動態(tài)綁定的屬性和方法的名稱進(jìn)行限制,可以在其對應(yīng)的類對象中定義特殊屬性__slots__,并給__slots__賦值一個(gè)所有元素都為字符串的列表或元組,這樣,對實(shí)例對象動態(tài)綁定的屬性和方法的名稱就只能來自于__slots__中的元素。
class MyClass(object):__slots__ = ("attrl","do_sth1") mc = MyClass() mc.attrl = 18 print(mc.attrl) >18
不在名單內(nèi)
mc.attr2 = 12>--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-34-afd3ca596a00> in <module>() ----> 1 mc.attr2 = 12AttributeError: 'MyClass' object has no attribute 'attr2' def do_sth1(self):print("do_sth1被調(diào)用了") from types import MethodType mc.do_sth1 = MethodType(do_sth1,mc) mc.do_sth1() >do_sth1被調(diào)用了
不在名單內(nèi)
def do_sth2():print("do_sth2被調(diào)用了") mc.do_sth2 = MethodType(do_sth2,mc)>--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-6-d60ee0e54e8c> in <module>()1 def do_sth2():2 print("do_sth2被調(diào)用了") ----> 3 mc.do_sth2 = MethodType(do_sth2,mc)AttributeError: 'MyClass' object has no attribute 'do_sth2'
在類對象中定義特殊屬性__slots__可以提高屬性的訪問速度
在類對象中定義特殊屬性__slots__可以減少內(nèi)存消耗
繼承了有__slots__的父類,子類沒有,則可以隨意定義
繼承了有__slots__的父類,子類有,則父類子類的方法屬性都有

總結(jié)

以上是生活随笔為你收集整理的面向对象编程(第五篇)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久伊人精品 | 国产又粗又长又爽 | 亚洲国产综合视频 | 黑名单上的人全集免费观看 | 成人123区| 日批国产| 中文字幕在线字幕中文 | 人人爱人人看 | 办公室摸腿吻胸激情视频 | 激情久久中文字幕 | 六月丁香综合 | 精品日本一区二区 | 国产综合无码一区二区色蜜蜜 | 国产精品免费视频一区二区三区 | 国语对白做受69 | 日韩av中文 | 美女扒开腿免费视频 | 黑人精品无码一区二区三区AV | 欧美黄片一区二区三区 | 成人乱人乱一区二区三区 | 久久男人天堂 | 男女一级黄色 | 久热精品在线视频 | 黄色免费网 | 四虎网站在线 | 依依成人综合 | 美足av | 一区二区三区在线免费播放 | 好看的黄色录像 | 久久五月天婷婷 | 黑人操白妞 | 午夜之声l性8电台lx8电台 | 中文字幕免费在线看线人动作大片 | 黄色三级在线 | 夜噜噜| 国产精品久久久久久久久久辛辛 | 久草最新网址 | 日韩av动漫| 日韩国产欧美一区二区三区 | 国产传媒一区二区 | 亚洲激情中文 | av亚州| 香蕉视频污在线观看 | 一级黄色片免费播放 | 亚洲天堂区 | 夜夜操影视 | 国产一区激情 | 美女被揉胸视频 | 午夜精品在线免费观看 | 成人亚洲视频 | 三级黄色视屏 | 国产一区不卡在线观看 | 久久一二区 | 国产精品久久一 | 99色婷婷| 亚洲视频自拍偷拍 | 国产精品国产三级国产专区53 | 国产无 | 色噜噜噜 | 手机看片日韩日韩 | 波多野结衣一区二区三区高清av | 最新国产在线视频 | 日韩一区二区三区在线视频 | 成人国产免费观看 | 欧美无砖砖区免费 | 久久国产影院 | 午夜在线播放 | 中国女人内精69xxxxxx | 国产一级爽片 | wwww在线观看 | 色女人av | 在线观看日韩国产 | 在线播放无码后入内射少妇 | 亚洲产国偷v产偷v自拍涩爱 | 国产在线观看不卡 | 乌克兰极品av女神 | 亚洲欧美视频在线观看 | 91精品国产免费 | 欧美精品激情视频 | 日韩av高清无码 | 欧美精品一区三区 | 久草视频在线资源站 | 看黄网站在线 | 91在线观看网站 | 制服 丝袜 综合 日韩 欧美 | 精品一区二区视频 | 日韩熟妇一区二区三区 | 国产乱子伦视频一区二区三区 | 人人爱人人看 | 天天摸夜夜操 | 欧美精品国产动漫 | 亚洲国产精品免费在线观看 | 2017日日夜夜| 白洁av | 国产网站大全 | 欧美 唯美 清纯 偷拍 | 欧美乱轮视频 | 久久a级片| 无码精品人妻一区二区三区影院 |