Python類繼承和多型原理解析

2022-10-06 04:18:09 字數 2269 閱讀 4748

現在屬於是老年人的腦子,東西寫著寫著就忘了,東西記著記著就不知道了。之前學c++的時候就把類、物件這塊弄得亂七八糟,現在是因為很想玩python,所以就看看python的類和物件。

就像說的,類有三個特徵:封裝、繼承、多型。

1、封裝:類封裝了一些方法,可通過一定的規則約定方法進行訪問許可權。

c++中的成員變數有public、private、ptotected。

在python中,預設的成員變數都是public的,如果成員變數前面是加兩個下劃線,表示該成員變數是私有的。並且private類不能被繼承類引用,並且不允許直接訪問。

2、繼承:在定義乙個類的時候可以從當前有的類中進行繼承。

python是允許多繼承的,並且在子類中擁有父類所有的成員變數和方法,為了緩解**中的冗餘,子類在父類的基礎上增加的成員變數可以如下修改。

class person(object):

def __init__(self,name,***):

self.name = name

self.*** ljsgig= ***

class child(person): # child 繼承 person

def __init__(self,name,***,mother,father):

person.__init__(self,name,***) # 子類對父類的構造方法的呼叫

self.mother = mother

self.father = fa

ljsgig

may = child("may","female","april","june")

print(may.name,may.***,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 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類繼承和多型原理解析

本文位址:

python 類 封裝 繼承 多型

類由一系列函式物件組成,在類中,函式物件稱為方法,方法的第乙個引數必須為self,表示當前例項物件 可把類理解為乙個dict,key為方法名 string型別 value為方法 class animal object def init self,age,color self.age age self...

Python 繼承和多型

廖雪峰python 教程筆記 class animal object 父類 def run self print animal is running.class dog animal 子類 def run self print dog is running.class cat animal 子類 d...

python 類繼承原理

1.屬性繼承一定記得要加上super 如下圖,不然的子類的屬性就只有你新增的,如下圖,父類有三個屬性 name,age,gender 子類新增了乙個weight屬性,屬性命名的話一般有三種形式 直接名字 self.weight 名字前面加乙個下劃線 如 self.weight 名字前面加兩個下劃線 ...