1. python中單繼承和多繼承中子類默認繼承父類的哪個構造函數
默認是__init__
【1】python中如果子類有自己的構造函數,不會自動調用父類的構造函數,如果需要用到父類的構造函數,則需要在子類的構造函數中顯式的調用。
【2】如果子類沒有自己的構造函數,則會直接從父類繼承構造函數,這在單繼承(一個子類只從一個父類派生)中沒有任何理解上的問題。
問題:如果是多繼承的情況,一個子類從多個父類派生,而子類又沒有自己的構造函數,則子類默認會繼承哪個父類的構造函數。
【3】子類從多個父類派生,而子類又沒有自己的構造函數時,
(1)按順序繼承,哪個父類在最前面且它又有自己的構造函數,就繼承它的構造函數;
(2)如果最前面第一個父類沒有構造函數,則繼承第2個的構造函數,第2個沒有的話,再往後找,以此類推。
2. Python從標准類型派生的原理是什麼
1.基類簡化了程序,使得程序的累贅部分減少,使程序簡潔。
比如,在不用基類的情況下,程序中你要設計一個鴨子類和一個鵝類,他們的成員變數都有頭,羽毛,雙腳,成員函數有喊叫,飛行等,那麼你每寫一個類都得重寫一下。如果有個基類是鳥類,那麼鴨子類和鵝類直接繼承這個基類,然後把他們獨有的特徵加進類裡面就行了。
2.易於派生出其他類。
3. python中的繼承和多態
繼承:在已有類的基礎上創建新類,這其中的一種做法就是讓一個類從另一個類那裡將屬性和方法直接繼承下來,從而減少重復代碼的編寫。
1.提供繼承信息的我們稱之為父類,也叫超類或基類;2.得到繼承信息的我們稱之為子類,也叫派生類或衍生類。3.子類除了繼承父類提供的屬性和方法,還可以定義自己特有的屬性和方法,所以子類比父類擁有的更多的能力
多態:子類在繼承了父類的方法後,通過方法重寫我們可以讓父類的同一個行為在子類中擁有不同的實現版本,這個就是多態。
4. python類的繼承!!誰能用通俗的方法,給小弟講一下,類的繼承!!
一個通用的例子是:
已經有一個類,叫做鳥
其有飛的方法/函數
然後你另外實現了一個 麻雀的 類
如果沒有類的繼承
那麼你就要:
先去實現 飛的方法
然後再單獨實現 麻雀 所具體的其他方法(和屬性)
而此類似於 飛 的這個方法,很明顯,是各種鳥都具有的,通用的方法
所以,為了避免,每一個其他的,某個鳥,都去分別實現一遍這樣的方法
所以,弄了個基類,即基本的類,主要的類
其實現一些大家所共有的,通用的東西
包括很多方法 很多屬性
然後其他子類
集成了此基類後
就不用再啰嗦地,重復地,去重新實現一遍那些基本的方法和屬性了。
只需要實現自己的類本身的特有的東西 就可以了。
不知道你看懂沒。
感興趣的,去看我總結的:
【整理】面向對象的基礎知識:類Class,對象(Object),實例(Instance)
(此處不給貼地址,只能靠你自己用google搜帖子標題,就可以找到帖子的地址了)
5. Python中繼承的理解與運用
9.5. 繼承
當然,如果一種語言不支持繼承就,「類」就沒有什麼意義。派生類的定義如下所示:
class DerivedClassName(BaseClassName):
命名 BaseClassName (示例中的基類名)必須與派生類定義在一個作用域內。除了類,還可以用表達式,基類定義在另一個模塊中時這一點非常有用:
class DerivedClassName(modname.BaseClassName):
派生類定義的執行過程和基類是一樣的。構造派生類對象時,就記住了基類。這在解析屬性引用的時候尤其有用:如果在類中找不到請求調用的屬性,就搜索基類。如果基類是由別的類派生而來,這個規則會遞歸的應用上去。
派生類的實例化沒有什麼特殊之處: DerivedClassName() (示列中的派生類)創建一個新的類實例。方法引用按如下規則解析:搜索對應的類屬性,必要時沿基類鏈逐級搜索,如果找到了函數對象這個方法引用就是合法的。
派生類可能會覆蓋其基類的方法。因為方法調用同一個對象中的其它方法時沒有特權,基類的方法調用同一個基類的方法時,可能實際上最終調用了派生類中的覆蓋方法。(對於 C++ 程序員來說,Python 中的所有方法本質上都是 虛 方法。)
派生類中的覆蓋方法可能是想要擴充而不是簡單的替代基類中的重名方法。有一個簡單的方法可以直接調用基類方法,只要調用: BaseClassName.methodname(self, arguments)。有時這對於客戶也很有用。(要注意只有 BaseClassName 在同一全局作用域定義或導入時才能這樣用。)
Python 有兩個用於繼承的函數:
函數 isinstance() 用於檢查實例類型: isinstance(obj, int) 只有在 obj.__class__ 是 int 或其它從 int 繼承的類型
函數 issubclass() 用於檢查類繼承: issubclass(bool, int) 為 True,因為 bool 是 int 的子類。
然而, issubclass(float, int) 為 False,因為 float 不是 int 的子類。
6. Python子類繼承,如果不用父類的函數和方法,應該怎麼寫
子類繼承父類時,如果父類有需要初始化的屬性,那麼必須在子類中調用父類的初始化方法,幫助父類進行初始化,否則,子類可以不調用父類的初始化方法
代碼示例
"""
父類Car中沒有屬性需要初始化,所有子類中也不需要調用父類的初始化方法
"""
classCar:
defshow_name(self):
print('carname')
classEeleCar(Car):
pass
car=EeleCar()
car.show_name()
7. python的三大特徵
第一點:封裝
隱藏對象的屬性和實現細節,僅對外提供公共訪問方式,在Python中用雙下線開頭的方式將屬性設置成私有的。
擁有三個好處:將變化隔離,便於使用,提高復用性,提高安全性。
第二點:繼承
繼承是一種創建新類的方式,在Python中,新建的類可以繼承一個或多個父類,父類又被稱為基類或超類,新建的類稱為派生類或子類。即一個派生類繼承基類的欄位和方法,繼承也允許把一個派生類的對象作為一個基類對象對待。
第三點:多態
一種事物的多種體現形式,函數的重寫其實就是多態的一種體現。Python中,多態指是父類的引用指向子類的對象。
實現多態的步驟:
1. 定義新的子類;
2. 重寫對應的父類方法;
3. 使用子類的方法直接處理,不調用父類的方法;
多態的好處:
1. 增加了程序的靈活性;
2. 增加了程序的可擴展性。
8. python一個類可以有兩個子類嗎
class subclass(superclass1,superclass2):
一個子類當然可以繼承多個超類,以上表示定義一個subclass類,從類superclass1,superclass2繼承
比如下面的代碼子類C就繼承了A和B類
class A:
def __init__(self):
self.one="one"
class B:
def __init__(self):
self.two="two"
class C(A,B):
def __init__(self):
A.__init__(self)
B.__init__(self)
def printselfnum(self):
print(self.one,self.two)
c=C()
c.printselfnum()
9. 如何理解關於python 面向對象的特性
python中一切皆為對象
其實面向對象沒什麼高大上的東西,只不過把我們平時對於事物的描述和動作系統的總結成了一個定義事物的方法而已。
我們平時向別人介紹一個他(她)從未見過的東西,會從外形和外貌特徵來說明這個東西,比如顏色,大小等,這就對象的屬性。還會介紹這個東西能做什麼或者有什麼用,這就是對象的方法。所以用屬性和方法就可以定義一個對象。也就是說一個對象包含了各種屬性和方法。
在python中使用對象屬性和方法的記法為:object.attribute 或 object.method()
Python中創建對象的第一步是建立一個類(class),這個類就類似於我們區分動物和植物。動物類和植物類各有自己的特徵,當我們見到一個事物時,如果它滿足動物的特徵,我們就說它是動物;如果它滿足植物的特徵,那麼它就屬於植物。同樣的當我們在python中建立一個類時,就要說名這個類的屬性有什麼,方法有什麼。然後再創建屬於這個類的具體實例,也就是對象。那麼這個對象也就有了這個類的屬性和方法。但具體的屬性和方法根據具體對象而定。就像動物類的屬性就是有耳朵,有眼睛,有皮毛,方法就是移動,進食等等,具體對象比如說是兔子那就是有長長的耳朵,紅色的眼睛,白色的皮毛。方法就是奔跑,進食就是吃胡蘿卜。這樣理解類和對象或者實例就沒什麼抽象的了。
__init__(): 創建類的默認屬性,也稱初始化
__str__() : 返回對象的字元串表達式
多態:對於不同的類可以有同名的方法,同名的方法應用到不同的類可以有不同的行為。
形如:
class Triangle:
def __init__(self, width,height):
self.width = width
self.height = height
def getArea(self):
area = self.width * self.height / 2.0
return area
class Square:
def __init__(self,size):
self.size = size
def getArea(self):
area = self.size * self.size
return area
繼承:類可以從其他類繼承屬性和方法;從其他類繼承屬性或方法稱為派生類或者子類。
形如:class Animal:
def __init__(self,name):
self.name = name
class Dog(Animal):
def __init__(self,color):
self.color = color
def runSpeed():
pass
這樣Dog就繼承了Animal的name屬性。
對象的方法代碼暫未想出可以用pass佔位。
10. python繼承和派生有何
繼承是面向對象編程語言中的一個重要機制,通過繼承可以在一個一般的類的基礎上建立新的類,被繼承的類稱為基類,在基類的基礎上建立的新類成為派生類。
類的繼承和派生其實是一回事,子類繼承了父類,父類派生了子類。繼承是從子類的角度來講的,派生是從父類的角度來講的。
至於派生出的可變類型子類和不可變類型子類,將繼續補充。