1. 程式人生 > 程式設計 >Python類繼承和多型原理解析

Python類繼承和多型原理解析

這篇文章主要介紹了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,sex,mother,father):
    Person.__init__(self,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)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。