小李飞刀:Python我又来啦,例无虚发~
生活随笔
收集整理的這篇文章主要介紹了
小李飞刀:Python我又来啦,例无虚发~
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一點點小刀刀
晚上收到了某招聘軟件的HR的消息,心里慌的不行。
因為很想換崗位了,可是當機會來的時候,我卻只能表示能力不行。
所以要速速的加油了!!!
開始學習的分割
日常一點點小雞血!
請不要假裝努力,結果不會陪你演戲。
面向對象高級編程
使用@property
Python內置的@property將方法變成屬性調用。
class Student(object):@propertydef score(self):return self._score@score.setterdef score(self, value):if not isinstance(value, int):raise ValueError('score must be an integer!')if value < 0 or value > 100:raise ValueError('score must between 0 ~ 100!')self._score = value加上@property后就變成了getter的方法,@property本身又創建了另一個裝飾器score.setter,負責把一個setter方法變成屬性賦值。
只定義getter方法,不定義setter方法就是一個只讀屬性做個作業~
多重繼承
通過多重繼承,一個子類可以繼承多個父類的屬性與方法。
class Father(object):pass class Mother(object):pass class children(Father,Mother):pass #這樣孩子就同時繼承了爸爸和媽媽的屬性MixIn
設計繼承關系的時候,多重繼承的設計被成為MixIn。
所以在上面的代碼中,我們可以考慮把Father改為FatherMixIn來更好的看出繼承關系。
MixIn的目的就是給一個類增加多種功能,所以在設計類的時候,盡量考慮多重繼承,少用復雜的多層次的類的繼承。
Python自帶的很多庫也使用了MixIn。舉個例子,Python自帶了TCPServer和UDPServer這兩類網絡服務,而要同時服務多個用戶就必須使用多進程或多線程模型,這兩種模型由ForkingMixIn和ThreadingMixIn提供。通過組合,我們就可以創造出合適的服務來。很多語言僅有單一繼承的情況,如Java。
定義類
-
__str__
直接顯示變量調用的不是__str__(),而是__repr__(),兩者的區別是__str__()返回用戶看到的字符串,而__repr__()返回程序開發者看到的字符串,也就是說,__repr__()是為調試服務的。
定義__str__方法,可以打印的好看 - __iter__
定義__iter__方法,在被用于for...in循環時返回迭代對象,for循環會不斷的調用__next__()方法拿到下一個值,直到5終止。 - __getitem__
定義__getitem__方法,讓實例變成list,但并不是真實的list,所以通過定義,讓它變得像list一樣可操作性。
要正確實現一個__getitem__()還是有很多工作要做的,因為傳入的參數可能不是int。 -
__getattr__
class Chain(object):def __init__(self, path=''):self._path = pathdef __getattr__(self, path):return Chain('%s/%s' % (self._path, path))def __str__(self):return self._path__repr__ = __str__ #無論API怎么變,SDK都可以根據URL實現完全動態的調用
可以嘗試鏈式調用,這個等我明天腦子清晰的時候詳細研究下。
代碼先貼 - __call__
還得看第二遍...明天一定要弄懂了
晚安~
總結
以上是生活随笔為你收集整理的小李飞刀:Python我又来啦,例无虚发~的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Photoshop设计一款Iphone风
- 下一篇: 自动钉木箱机器人_一种木箱生产用自动钉装