晚上收到了某招聘軟件的HR的消息,內心慌的不行。
由於很想換崗位了,但是當機會來的時候,我卻只能表示能力不行。
因此要速速的加油了!!!編程
平常一點點小雞血!
請不要僞裝努力,結果不會陪你演戲。網絡
Python內置的@property
將方法變成屬性調用。多線程
class Student(object): @property def score(self): return self._score @score.setter def 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方法就是一個只讀屬性
作個做業~spa
經過多重繼承,一個子類能夠繼承多個父類的屬性與方法。線程
class Father(object): pass class Mother(object): pass class children(Father,Mother): pass #這樣孩子就同時繼承了爸爸和媽媽的屬性
設計繼承關係的時候,多重繼承的設計被成爲MixIn。
因此在上面的代碼中,咱們能夠考慮把Father改成FatherMixIn來更好的看出繼承關係。設計
class FatherMixIn(object): pass class MotherMixIn(object): pass class children(FatherMixIn,MotherMixIn): pass
MixIn
的目的就是給一個類增長多種功能,因此在設計類的時候,儘可能考慮多重繼承,少用複雜的多層次的類的繼承。調試
Python自帶的不少庫也使用了MixIn。舉個例子,Python自帶了TCPServer和UDPServer這兩類網絡服務,而要同時服務多個用戶就必須使用多進程或多線程模型,這兩種模型由ForkingMixIn和ThreadingMixIn提供。經過組合,咱們就能夠創造出合適的服務來。
不少語言僅有單一繼承的狀況,如Java。code
__str__
定義__str__方法,能夠打印的好看對象
直接顯示變量調用的不是__str__(),而是__repr__(),二者的區別是__str__()返回用戶看到的字符串,而__repr__()返回程序開發者看到的字符串,也就是說,__repr__()是爲調試服務的。
__iter__
for...in循環
時返回迭代對象,for循環會不斷的調用__next__()方法拿到下一個值,直到5終止。__getitem__
__getattr__
能夠嘗試鏈式調用,這個等我明天腦子清晰的時候詳細研究下。
代碼先貼
class Chain(object): def __init__(self, path=''): self._path = path def __getattr__(self, path): return Chain('%s/%s' % (self._path, path)) def __str__(self): return self._path __repr__ = __str__ #不管API怎麼變,SDK均可以根據URL實現徹底動態的調用
__call__
還得看第二遍...明天必定要弄懂了
晚安~