2023年7月27日python物件導向中的繼承

2021-08-21 21:07:36 字數 2798 閱讀 9980

只要跟物件有關係的前面就要加self,物件導向操作的時候

作業系統,環境,開發軟體?

函式式開發和物件導向的開發的區別:

函式式開發在每次呼叫的時候都需要給引數傳參,

而物件導向的開發,可以把函式定義在型別裡面叫做方法,只需要在建立物件的時候傳一次參就可以了,

之後可以直接呼叫型別中的方法

面向過程的程式設計的核心是過程(流水線式思維),過程即解決問題的步驟,面向過程的設計就好比精心設計好一條

流水線,考慮周全什麼時候處理什麼東西。

優點是:極大的降低了寫程式的複雜度,只需要順著要執行的步驟,堆疊**即可。

缺點是:一套流水線或者流程就是用來解決乙個問題,**牽一髮而動全身。

在python 中物件導向的程式設計並不是全部。

物件導向程式設計可以使程式的維護和擴充套件變得更簡單,並且可以大大提高程式開發效率 ,另外,基於物件導向的程式可

以使它人更加容易理解你的**邏輯,從而使團隊開發變得更從容。

如果父類的屬性子類用不完怎麼辦?

一般沒有這種情況,寫型別之前要先分析,分析出來乙個型別定義一些公共的屬性為父類,

然後其他的類在父類的基礎上如果需要新增屬性再新增

理論都是在實踐之後得出來的,所以要想明白就多練

多繼承就是可以繼承多個型別,用於解決乙個物件有多個角色

檢視檔案的命令

import os

os.listdir("f:")

命令列用的是gbk編碼

繼承中,在子類方法之中加super().父類中的方法名,子類方法執行完之後就會執行父類的方法

**********************************

1) 繼承的語法結構

繼承的語法結構:

class 型別(要繼承的型別):

pass

當前型別:子類

要繼承的型別:父類

子類繼承父類

python中:型別的後面可以不新增括號[預設繼承了object型別]

class pet: ==  class pet(object): == class pet():

python中檢視自己到底繼承了哪些父類:

用魔法屬性:型別名._ _base_ _ 檢視當前型別繼承的父類

s._ _base__

怎麼檢視物件的當前型別:

通過型別的_ _class_ _魔法屬性,直接檢視,和type(型別名稱)效果一致!

物件名._ _class_ _ == type(物件)--> 得到當前物件的所屬型別

s._ _class_ _

怎麼檢視當前型別的所有子類:

通過型別的父類名._ _subclasses_ _()這個魔法函式,直接以列表的形式檢視當前型別的所有子類

person._ _subclasses_ _()

[, ]

(2) 繼承的意義

>> 子類中可以編寫父類中沒有的屬性和方法

實現功能的擴充套件!

>> 子類中可以重寫父類中已經在的方法【方法重寫】

執行該方法的過程中,如果子類沒有重寫該方法,執行父類的方法

如果子類重寫了該方法,直接執行子類的方法,方法名相同。

>> 

> 方法過載:[python沒有方法過載]在乙個型別中,出現了兩個或者兩個以上

相同名稱的方法[引數不同],根據傳遞不同的引數執行不同的方法!

由於python弱型別語言的特性,已經在方法中具備了這樣的功能

python中沒有方法過載

非要給python新增乙個方法過載的概念的話:@[email protected]

如果繼承了父類之後,子類需要新增自己的屬性的話,需要把父類的屬性先傳遞給子類,傳遞方法

有兩種,具體**如下,在父類的基礎上新增了age屬性:

class zhishen(god):

def __init__(self, name, age):

#呼叫父類初始化函式~初始化父類資料

# god.__init__(self, name) # 型別呼叫             #這兩種方法效果一樣

super(zhishen, self).__init__(name) # 物件呼叫

**************************************

多繼承,乙個類繼承多個父類,【多繼承-廣度優先 vs 深度優先】,檢索是深度優先:

python的多繼承:體現的是 生活中 乙個物件 會有多個角色的概念

如果乙個型別繼承了多個類,這個型別裡面是pass,呼叫這個型別中的乙個方法的時候,會先

尋找繼承的第乙個父類中有沒有這個方法,如果有的話就直接呼叫第乙個父類中的那個方法,

如果繼承的第乙個父類中沒有那個那個方法的話就尋找第二個父類,這樣依次尋找,先深度再廣度。

lass a():

def __init__(self):

self.value = "型別aaaaaaaaaaa的value值"

def show(self):

print("型別aaaaaaaaaaaa中的show執行了")

class b(a):

pass

class c():

def __init__(self):

self.value = "型別ccccccccc中的value值"

def show(self):

print("型別ccccccccccccc中的show執行了")

class x(b, c):

pass

x = x()

x.show()

>>>>型別aaaaaaaaaaaa中的show執行了

2023年1月27日訓練筆記

今天主要做了做總結,先是自己做總結,然後下午和做數學的同學一塊做了總結和討論,感覺是很好的過程,每個人都更清楚了自己的不足,知道自己接下來該多去看什麼,大家也能更好地統一進度,接下來我要看polya定理的更多題型,莫比烏斯也要進一步理解,然後組合數學之前的東西也要再回顧一下。貼一下部分總結 高斯消元...

2023年7月19日學習筆記

整數型別 short 佔兩位元組的儲存空間,表數範圍為 32768 32768 最高位為符號位0表正1表負 unsigned short 無符號短整型,佔2個位元組的儲存空間,最高位位數值表數範圍為0 65535 int 佔4位元組,最高位為符號位 0表正,1表負 表數範圍為 2147483648 ...

7月27日學習日誌

學習日誌 姓名 郭富民 日期 2017.07.27 今日學習任務 除錯出昨日內容,寫出四個燈和四個按鈕 今日任務完成情況 今日任務已按計畫完成。翻閱gpio.h檔案,用提供的函式測量按鍵狀態並點亮相應的燈。今日開發中遇到的問題彙總 編譯時系統報錯 cannot open source input f...