日常python學習-6

2018.3.13

1.python的OOP

直接看例子:

class Student(object):
    pass

類名一般大寫,括號內部表示繼承.如果沒有合適的繼承類,就直接繼承object類.

這裏OOP最大的不同是一個實例可以綁定各種數據,同一個類的兩個實例的變量名可以有很大區別:

bob = Student()
bob.name = 'bob'

這種爲實例隨意增加變量的屬性是動態語言特有的.

更加規範的,加上方法的類的寫法如下:

class Student(object):

    def __init__(self, name, score):
        self.name = name
        self.score = score

    def get_grade(self):
        if self.grade > 95:
            print('4.3')
        elif self.grade >90:
            print('4.0')
        else:
            print('less than 4.0')

    def print_score(self):
        print("%s : %s" % (self.name,self.grade))

構造函數的寫法就是利用一個特殊的__init__方法,第一個參數必須是self. 其餘的方法寫法和python寫函數的區別也就在一個self變量.沒什麼太大區別.調用方法的時候self是解釋器自動傳進去的,不用多管:

bob = Student('bob',95)
bob.get_grade()
bob.print_score()
2.私有屬性

python的私有屬性定義的時候以雙下劃線開頭,這樣就讓外部無法直接訪問.設置私有屬性更改值之類的都用方法來實現,這樣可以檢查參數,保證沒有無效值出現.

class Student(object):

    def __init__(self, name, score):
        self.__name = name
        self.__score = score

    def print_score(self):
        print('%s: %s' % (self.__name, self.__score))

    def set_score(self,score):
        self.__score = score
3.多態性質

由於有繼承,那麼子類就可以直接調用父類方法.如果需要覆蓋,直接覆蓋即可很方便

4. type()函數

拿到一個對象,要知道它是什麼類的實例,可以使用type方法,type的返回值就是該對象的類:

>>> type(123)==type(456)
True
>>> type(123)==int
True
>>> type('abc')==type('123')
True
>>> type('abc')==str
True
>>> type('abc')==type(123)
False
5.isinstance()
>>> a = Animal()
>>> d = Dog()
>>> h = Husky()
>>>> isinstance(h, Husky)
True
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章