小李飛刀:Python我又來啦,例無虛發~

一點點小刀刀

晚上收到了某招聘軟件的HR的消息,內心慌的不行。
由於很想換崗位了,但是當機會來的時候,我卻只能表示能力不行。
因此要速速的加油了!!!編程

開始學習的分割

平常一點點小雞血!
請不要僞裝努力,結果不會陪你演戲。網絡

面向對象高級編程

使用@property

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

clipboard.png

多重繼承

經過多重繼承,一個子類能夠繼承多個父類的屬性與方法。線程

class Father(object):
    pass
class Mother(object):
    pass
class children(Father,Mother):
    pass
#這樣孩子就同時繼承了爸爸和媽媽的屬性

MixIn

設計繼承關係的時候,多重繼承的設計被成爲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__
    定義__iter__方法,在被用於for...in循環時返回迭代對象,for循環會不斷的調用__next__()方法拿到下一個值,直到5終止。
  • __getitem__
    定義__getitem__方法,讓實例變成list,但並非真實的list,因此經過定義,讓它變得像list同樣可操做性。
    要正確實現一個__getitem__()仍是有不少工做要作的,由於傳入的參數可能不是int。
  • __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__

還得看第二遍...明天必定要弄懂了

晚安~

相關文章
相關標籤/搜索