Python子類繼承,如果不用父類的函式和方法,應該怎麼寫

2022-02-14 01:14:32 字數 5740 閱讀 9323

1樓:句心後端開發

子類繼承父類時,如果父類有需要初始化的屬性,那麼必須在子類中呼叫父類的初始化方法,幫助父類進行初始化,否則,子類可以不呼叫父類的初始化方法

**示例

"""父類car中沒有屬性需要初始化,所有子類中也不需要呼叫父類的初始化方法

"""class car:

def show_name(self):

print('car name')

class eelecar(car):

pass

car = eelecar()

car.show_name()

2樓:

子類呼叫父類函式有以下方法:直接寫類名呼叫用 super(type, obj).method(arg)方法呼叫。

在類定義中呼叫本類的父類方法,可以直接用super().method(arg) class a: def method(self, arg):

pass class b(a): def method(self, arg): # a.

method(self,arg) # 1 # super(b, self).method(arg) # 2 super().method(arg) # 3

python 子類繼承父類後,可以呼叫父類中的函式嗎?

python中單繼承和多繼承中子類預設繼承父類的哪個建構函式

3樓:育知同創教育

預設是__init__

【1】python中如果子類有自己的構

造函式,不會自動呼叫父類的建構函式,如果需要用到父類的建構函式,則需要在子類的建構函式中顯式的呼叫。

【2】如果子類沒有自己的建構函式,則會直接從父類繼承建構函式,這在單繼承(乙個子類只從乙個父類派生)中沒有任何理解上的問題。

問題:如果是多繼承的情況,乙個子類從多個父類派生,而子類又沒有自己的建構函式,則子類缺省會繼承哪個父類的建構函式。

【3】子類從多個父類派生,而子類又沒有自己的建構函式時,

(1)按順序繼承,哪個父類在最前面且它又有自己的建構函式,就繼承它的建構函式;

(2)如果最前面第乙個父類沒有建構函式,則繼承第2個的建構函式,第2個沒有的話,再往後找,以此類推。

python子類呼叫父類方法或子類定義的方法輸出會多出個'none'

4樓:禱裯

我覺得最佳的回答的是不對的, 在python中若是函式沒有定義return的結果,則會預設返回乙個none

def func():

a = 1

b = 2

a = func()

print(a)

>>> none

在官方文件中也有說明的, 而你列印出none的原因就是因為你在類的方法

中直接列印了字串沒有返回值, 將方法中的pring改成return即可

5樓:

這是類的繼承問題。先說一下,對於python來說定義函式要用def來定義,沒有這個關鍵字無法定義函式。

然後通常,如果父類中有呼叫self.a,那麼這個就是類的屬性,也就是說,子類中自然存在。直接在子類中直接呼叫即可,如果在父類中只定義了乙個區域性變數,那麼子類是獲取不到的。

不過可以定義類方法,直接呼叫類方法獲取你想要的值。

方法1.

class a: def get_a(self): self.

a=1 print(self.a)class b(a): def get_b(self):

#self不是python關鍵字,建議類方法用self作為第乙個引數 self.get_a()if __name__ == '__main__':b = b()b.

get_b()

6樓:幻夜震天

使用print(my.describe_restaurant())會多輸出乙個none,是因為在def my.describe_restaurant(self):

函式中,用了print,

def my.describe_restaurant(self):

print('the cuisine type of'+self.restaurant_name + 'is' + self.cuisine_type)

所以print(my.describe_restaurant())==print(print('the cuisine type of'+self.restaurant_name + 'is' + self.

cuisine_type)),

所以輸出多乙個none,可以改成如下兩種方法都行

1.print(my.describe_restaurant())改成直接呼叫my.describe_restaurant()

2.def my.describe_restaurant(self):

return 'the cuisine type of'+self.restaurant_name + 'is' + self.cuisine_type

print改成return

python中子類對父類初始化變數的賦值 50

7樓:

1、使用self.x = x這樣來新增變數2、對於父類的初始化引數,如果不寫,預設就使用父類無參的__init__方法

3、子類初始化父類引數b.__init__(self,aa,ab)4、使用super(子類型別,子類物件).foo()呼叫父類方法

8樓:匿名使用者

**:class a:

def __init__(self,aa,bb):

print('class a',aa,bb)class b(a):

def __init__(self,aa,bb):

super().__init__(aa,bb)print('class b',aa,bb)b=b(11,22)

super(b,b).__init__(3,4)結果:class a 11 22

class b 11 22

class a 3 4

知道了吧?如果不清楚,最好就是自己寫個簡單的demo測試下

如何在python中呼叫父類的同名方法

有的python內建函式怎麼就乙個pass

9樓:

兩種情況:

一種情況是繼承的時候會用到的,父類中的方法只做宣告處理,具體實現由子類實現,父類中的方法直接pass處理;

第二種情況是該函式不是由python實現的,是由c或者其他語言實現的,儘管有很多標準庫是由python**實現,但是涉及到底層支撐架構的功能還是c**。一些ide為了對這些進行友好**提示,會弄和底層一樣的訪問介面,而其實現直接寫 pass 略過。如果是用c實現的方法,具體的實現可以到cpython上看,這也是開源的。

python類和函式的區別

10樓:學雅思

一、主體不同

1、類:是物件導向程式設計實現資訊封裝的基礎。

2、函式:是指一段在一起的、可以做某一件事兒的程式。也叫做子程式、(oop中)方法。

二、特點不同

1、類:是一種使用者定義的引用資料型別,也稱類型別。每個類包含資料說明和一組運算元據或傳遞訊息的函式。類的例項稱為物件。

2、函式:分為全域性函式、全域性靜態函式;在類中還可以定義建構函式、析構函式、拷貝建構函式、成員函式、友元函式、運算子過載函式、內聯函式等。

三、規則不同

1、類:實質是一種引用資料型別,類似於byte、short、int(char)、long、float、double等基本資料型別,不同的是它是一種複雜的資料型別。

2、函式:函式必須宣告後才可以被呼叫。呼叫格式為:函式名(實參)呼叫時函式名後的小括號中的實參必須和宣告函式時的函式括號中的形參個數相同。

11樓:日天日地

1、作用不同

python是物件導向的動態型別語言,最初被設計用於編寫自動化指令碼(shell),隨著版本的不斷更新和語言新功能的新增,越來越多被用於獨立的、大型專案的開發。

函式是一段在一起的、可以做某一件事兒的程式。也叫做子程式、(oop中)方法。

2、特點不同

python的設計哲學是「優雅」、「明確」、「簡單」。因此,perl語言中「總是有多種方法來做同一件事」的理念在python開發者中通常是難以忍受的。python開發者的哲學是「用一種方法,最好是只有一種方法來做一件事」。

函式中乙個較大的程式一般應分為若干個程式塊,每乙個模組用來實現乙個特定的功能。所有的高階語言中都有子程式這個概念,用子程式實現模組的功能。

3、功能不同

python本身被設計為可擴充的。並非所有的特性和功能都整合到語言核心。python提供了豐富的api和工具,以便程式設計師能夠輕鬆地使用c語言、c++、cython來編寫擴充模組。

在程式設計中,常將一些常用的功能模組編寫成函式,放在函式庫中供公共選用。要善於利用函式,以減少重複編寫程式段的工作量。

12樓:匿名使用者

樓上說錯了哦,類可以有類方法(查查什麼是class method),不需例項化也可以使用的。

python的類和函式的區別主要在於類可以有變數和各種方法,而函式沒有。函式只能被執行,返回或者不返回值都可以。

模組如果沒有把類宣告為私有,其他模組就可以使用這個類,方法是import這個模組,然後用"模組名.類名"來呼叫。

13樓:匿名使用者

類使用需要

例項化,函式不需要例項化。

class l(object):

def do(self):

...類l使用時要先例項化

l=l()

然後才能呼叫do這個函式

result=l.do()

函式是def do():

....

result=do()

類主要用於封裝一些函式

具體可以參考你比較了解的語言

可以在a模組中訪問b模組中的類

a模組下有a.py這個檔案,a.py中有個類ab模組中有b.py這個檔案,b.py中有個類b在a.py中呼叫類b

from a.a import a

bb=b()

這就呼叫了b這個類,但是不能在a中呼叫b的同時在b中呼叫a

14樓:匿名使用者

python中,在類中可以定義函式,類和函式都可作為乙個模組儲存。要呼叫類或函式只需要import這個類或函式所在模組名稱就可以了。在乙個模組當然可以訪問另外乙個模組的類。

假如你正在編輯的模組的名稱叫做aaa,你想調入bbb模組中的c1這個類,那麼你只需要在aaa模組最前面寫入 from bbb import c1 即可

15樓:

額,類主要是為了資料封裝,隱藏細節,再加上類對多型,繼承的支援,可以更好地運用設計模式等設計方法。

例子嘛。。。

你說的應該是函式式程式設計和物件導向程式設計的區別~~~就像c語言和c++的區別一樣~

使用c也可以做物件導向程式設計,比如結構體中封裝資料,使用函式指標封裝方法,但是這種「偽裝」有時候並不直觀~~ 所以才有從語法層面支援物件導向的語言~~

不知道我說沒說到點子上。

詳細的來說,如果只是簡單的指令碼,過程式沒問題~~但是如果是複雜的系統,比如萬行以上的系統,不使用物件導向的設計方法,是很容易失控的~~

如果在抽象類中定義私有變數,子類繼承抽象類後,子類中的方法需要訪問抽象類中定義的私有變數怎麼辦

私有的子類是不可以用的。但是如果想訪問父類的私有變數或者改變私有變數,可以在超類中定義兩個方法get set 在抽象父類裡定義兩個setter getter方法。抽象類不是必須有抽象方法。定義私有變數主要是防new的 你把類定為靜態,或者把變數定義為靜態,等都可以訪問 set,get來獲取 priv...

如果鋼筆長期不用怎樣保養如果鋼筆長期不用怎樣保養?

當長期不用一支鋼筆前一定要記住好好清洗掉其中殘留墨水,不然現有墨水將容易蒸發乾涸,殘留沉澱物於筆中,時間一長將很難清洗,待你再用這支鋼筆時將非常苦惱。擴充套件資料 使用保養 新筆到手 一般鋼筆到手後上水即可正常使用,不需如個別人所說拿開水泡新筆。當然有時難免會碰到鋼筆不出水或者筆尖乾澀的情況,這個時...

知乎為什麼用Python,而不用PHP

膠水語言,能夠把用其他語言製作的各種模組 尤其是c c 很輕鬆地聯結在一起。常見的一種應用情形是,使用python快速生成程式的原型 有時甚至是程式的最終介面 然後對其中有特別要求的部分,用更合適的語言改寫,非常方便快速成型。知乎為什麼用python,而不用php 因為技術團隊的老大,熟悉的就是py...