您好,登錄后才能下訂單哦!
這篇文章主要介紹了Python類繼承和多態原理的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
現在屬于是老年人的腦子,東西寫著寫著就忘了,東西記著記著就不知道了。之前學C++的時候就把類、對象這塊弄得亂七八糟,現在是因為很想玩python,所以就看看python的類和對象。
就像說的,類有三個特征:封裝、繼承、多態。
1、封裝:類封裝了一些方法,可通過一定的規則約定方法進行訪問權限。
C++中的成員變量有public、private、ptotected。
在python中,默認的成員變量都是public的,如果成員變量前面是加兩個下劃線,表示該成員變量是私有的。并且private類不能被繼承類引用,并且不允許直接訪問。
2、繼承:在定義一個類的時候可以從當前有的類中進行繼承。
python是允許多繼承的,并且在子類中擁有父類所有的成員變量和方法,為了緩解代碼中的冗余,子類在父類的基礎上增加的成員變量可以如下修改。
class Person(object): def __init__(self,name,sex): self.name = name self.sex = sex class Child(Person): # Child 繼承 Person def __init__(self,name,sex,mother,father): Person.__init__(self,name,sex) # 子類對父類的構造方法的調用 self.mother = mother self.father = father May = Child("May","female","April","June") print(May.name,May.sex,May.mother,May.father)
3、多態:當子類繼承父類之后,成員方法既可以重寫也可以不重寫。當調用的時候只要保證新方法編寫正確,不用管原來的代碼。
對擴展開放(Open for extension):允許子類重寫方法函數
對修改封閉(Closed for modification):不重寫,直接繼承父類方法函數
python是一種動態語言,動態語言是在運行的時候確定數據類型的語言。變量在使用前不用聲明,通常變量的類型是被復制的那個值的類型。
靜態語言是在編譯的時候變量的數據類型即可確定的語言,多數靜態類型語言要求在使用變量之前鼻血聲明數據類型。
在類中,當要對成員變量進行約束的時候可以使用@property,python內置的@property裝飾器是負責把一個方法變成屬性調用
在實例屬性操作的時候,就知道該屬性很可能不是直接暴露的,而是通過getter和setter方法來實現的。還可以定義只讀屬性,只定義getter方法不定義setter就是一個只讀屬性
請利用@property給一個Screen對象加上width和height屬性,以及一個只讀屬性resolution:
class Screen(object) : @property def width(self) : return self._width @width.setter def width(self,valuer) : if not isinstance(valuer,int): raise ValueError('score must be an integer') if valuer < 0 : raise ValueError('score must over zero') self._width=valuer @property def height(self) : return self._height @height.setter def height(self,number) : if not isinstance(number,int) : raise ValueError('score must be an integer') if number < 0 : raise ValueError('score must be an zero') self._height = number @property def resolution(self): return self._width * self._height s=Screen() s.width = 1024 s.height = 768 print(s.resolution)
感謝你能夠認真閱讀完這篇文章,希望小編分享的“Python類繼承和多態原理的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。