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

python父類

發布時間: 2022-01-08 15:33:16

A. python子類與父類的關系問題

  1. 不如貼代碼

  2. 可以去看下 MRO 的東西, 以及類/實例的屬性和__dict__的關系

  3. 屬性是怎麼查找的, getattr, __getattr__, __getattribute__ 這幾個是怎麼運行的...


另外你這個 method 是什麼我真的沒懂... 什麼叫 A類的類名...

B. 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)更直觀一些。

C. Python中子類怎樣調用父類方法

python中類的初始化方法是__init__(),因此父類子類的初始化方法都是這個,如果子類不實現這個函數,初始化時調用父類的初始化函數,如果子類實現這個函數,就覆蓋了父類的這個函數,既然繼承父類,就要在這個函數里顯式調用一下父類的__init__(),這跟C++,jAVA不一樣,他們是自動調用父類初始化函數的。 調用父類函數有以下方法: 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 1.直接寫類名調用 2.用 super(type, obj).method(arg)方法調用。 3.在類定義中調用本類的父類方法,可以直接 super().method(arg). 在代碼中調用對象的父類的方法的示例: ob = B() super(B,ob).method(arg) #調用class B的父類class A的method。

D. python 中怎樣調用父類方法

子類調用父類函數有以下方法:
直接寫類名調用
用 super(type, obj).method(arg)方法調用。
在類定義中調用本類的父類方法,可以直接用super().method(arg)

1
2
3
4
5
6
7
8
9

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

E. python 如何調用父類 的父類 的方法

F. 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()

G. python2.7怎麼查看類或對象的父類

In[1]:classa(list):
...:pass
...:

In[2]:a.__bases__
Out[2]:(list,)

In[3]:a.mro()
Out[3]:[__main__.a,list,object]

In[4]:

如果解決了您的問題請採納!
如果未解決請繼續追問

H. 請問python如何將一個子類對象賦值給父類對象

classF:
def__init__(self):
pass
deffun(self):
print"InF"

classS(F):
def__init__(self):
F.__init()
deffun(self):
print"InS"

f=S()
f.fun()

python本來就是動態類型的語言,所以本來就不需要像C#那樣的賦值,像上面的代碼即可以實現C#裡面的功能。

I. python子類調用父類方法出現None

None是tell函數執行的結果, 因為它沒有return所以返回值是None
class類名宜採用駝峰結構, 首字母應該大寫

熱點內容
查看伺服器ip限制 發布:2024-09-20 16:56:27 瀏覽:388
p搜系統只緩存1頁為什麼 發布:2024-09-20 16:48:51 瀏覽:838
上網的賬號和密碼是什麼東西 發布:2024-09-20 16:31:31 瀏覽:612
安卓手機王者榮耀如何調超高視距 發布:2024-09-20 16:31:30 瀏覽:428
安卓G是什麼app 發布:2024-09-20 16:23:09 瀏覽:81
iphone怎麼壓縮文件 發布:2024-09-20 16:08:18 瀏覽:356
linux查看用戶名密碼是什麼 發布:2024-09-20 16:03:20 瀏覽:744
mac執行python腳本 發布:2024-09-20 15:58:52 瀏覽:779
單片機android 發布:2024-09-20 09:07:24 瀏覽:765
如何提高三星a7安卓版本 發布:2024-09-20 08:42:35 瀏覽:664