當前位置:首頁 » 編程語言 » python父類調用子類

python父類調用子類

發布時間: 2022-05-26 15:40:27

A. python子類繼承父類,使用self報錯,求大神指點

我的是python3;
這里有兩個問題:
1、你繼承的時候,為何跟父類的函數名都是「method」,除非的你想改寫父類的這個函數「method」,若不是,就不要用同樣的函數名;我這里把函數名改成了「method2」;
2、調用父類的方法時,不要這樣「father.method(self)」,而應該是這樣「self.method()」;
In[77]: class son(father):
def method2(self):
print ('starting son.method')
self.method()
print('ending son.method')
In[78]: s_ = son() # 實例化類'son'
In[79]: s_.method2() # 調用子類的方法「method2」
starting son.method
in father.method
ending son.method
In[80]: s_.method() # 調用父類的方法「method」
in father.method

B. python子類如何才能調用父類的方法

.直接寫類名調用
2.用 super(type, obj).method(arg)方法調用。
3.在類定義中調用本類的父類方法,可以直接 super().method(arg).
在代碼中調用對象的父類的方法的示例:

ob = B()super(B,ob).method(arg) #調用class B的父類class A的method。

初始化中調用父類初始化方法示例:class B(A):def __init__(self):super().__init__()

C. Python父類怎樣可以使用子類的屬性和方法嗎

父類不可以使用子類的屬性和方法

D. Python 子類繼承父類的問題

  1. 如果我沒有理解錯你的問題的話,答案是不會的.子類一樣可以寫自己的__init__函數.請看:

  2. '''
    1.繼承有什麼好處?最大的好處是子類獲得了父類的全部功能。
    2.當然,也可以對子類增加一些方法.
    3.當子類和父類都存在相同的run()方法時,我們說,子類的run()覆蓋了父類的run(),在代碼運行的時候,總是會調用子類的run()。這樣,我們就獲得了繼承的另一個好處:多態。
    '''
    classAnimal(object):#父類
    def__init__(self,name):
    self.name=name
    defrun(self):
    print('Animalisrunning...')
    defsleep(self):
    print('Animalissleeping...')

    classDog(Animal):#子類
    #初始化父類有兩種方式:
    #父類.__init__(self,父類參數)=>Animal.__init__(self,name)
    #super(子類,self).__init__(父類參數)=>super(Dog,self).__init__(name)
    def__init__(self,name,color):
    #Animal.__init__(self,name)
    super(Dog,self).__init__(name)
    self.color=color
    defrun(self):#多態
    print('Dogisrunning...')
    defshow_info(self):
    print('name=',self.name)#繼承了父類的屬性
    print('color=',self.color)
    self.run()#調用自己的方法

    ab=Dog('Lorry','Red')
    ab.show_info()

E. Python繼承父類parent的正確格式為

格式:

class 子類名(父類1,父類2)

類的繼承就是讓子類擁有父類的屬性和方法。

幾個注意:py支持多繼承

子類繼承的父類只能初始化一次,如果父類1和父類2有共同的父類或者祖先類,則類初始化的時候會失敗。

當父類具有相同方法時,會調用最先繼承的父類中的方法,如果要指定父類,則需要重寫此方法,並通過父類名.方法名來調用指定父類方法。

F. python中子類調用父類的初始化函數初始化自身有些不太懂的地方!代碼如下

python2裡面需要這樣寫,python3裡面不需要寫參數,直接super().__init__()就可以了。

G. Python子類調用父類方法或子類定義的方法輸出會多出個'None'

我覺得最佳的回答的是不對的, 在python中若是函數沒有定義return的結果,則會默認返回一個none

deffunc():
a=1
b=2

a=func()
print(a)

>>>None

在官方文檔中也有說明的,而你列印出none的原因就是因為你在類的方法
中直接列印了字元串沒有返回值,將方法中的pring改成return即可

H. Python中如何使具有相同父類中的兩個子類之間進行方法調用

子類調用父類函數有以下方法:
直接寫類名調用
用 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

I. python 子類怎麼調用父類方法

兩種方法解決:
- 第一種

class A:
def __init__(self):
self.namea="aaa"
def funca(self):
print "function a : %s"%self.namea
class B(A):
def __init__(self):
#這一行解決了問題
A.__init__(self)
self.nameb="bbb"
def funcb(self):
print "function b : %s"%self.nameb
b=B()
print b.nameb
b.funcb()
b.funca()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
第二種:
#父類需要繼承object對象
class A(object):
def __init__(self):
self.namea="aaa"
def funca(self):
print "function a : %s"%self.namea
class B(A):
def __init__(self):
#這一行解決問題
super(B,self).__init__()
self.nameb="bbb"
def funcb(self):
print "function b : %s"%self.nameb
b=B()
print b.nameb
b.funcb()
b.funca()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
PS:讓類A繼承自object類,這樣才能使用super函數,因為這是python的「新式類」支持的特性。當前的class和對象可以作為super函數的參數使用,調用函數返回的對象的任何方法都是調用超類的方法,而不是當前類的方法。

優劣:
- 方法一更直觀,方法二可以一次初始化所有超類
- super函數比在超類中直接調用未綁定方法更直觀,但是其最大的優點是如果子類繼承了多個父類,它只需要使用一次super函數就可以。然而如果沒有這個需求,直接使用A.init(self)更直觀一些。

J. python 如何調用子類中的方法呢

別人的是多態,也就是大家都從一個介面繼承,然後子類對象可以當父類用,你這個父類都不知道誰繼承了它,怎麼調用子類方法?你這個思路不太對勁的。

熱點內容
php查詢mysql連接 發布:2025-02-12 21:05:45 瀏覽:632
linuxc當前時間 發布:2025-02-12 21:03:32 瀏覽:28
雲鎖神伺服器 發布:2025-02-12 21:03:29 瀏覽:487
c語言int和float 發布:2025-02-12 21:03:24 瀏覽:20
我的世界有什麼好玩的大伺服器 發布:2025-02-12 21:01:59 瀏覽:98
方舟手游如何解鎖自己的伺服器 發布:2025-02-12 20:54:09 瀏覽:657
貓影視源碼 發布:2025-02-12 20:42:05 瀏覽:923
區域網如何訪問其他電腦 發布:2025-02-12 20:39:06 瀏覽:378
新平板電腦的數字密碼如何知道 發布:2025-02-12 20:31:19 瀏覽:345
打包php整站 發布:2025-02-12 20:29:48 瀏覽:358