python調用父類對象的幾個方法

 

方法一:父類.__init__(self,...)調用,self不能省略,否則報錯

#coding=utf-8
class family(object):
    def __init__(self,host):
        self.host = host
    def printf(self):
        print('the hoster of the family is %s.'%self.host)
class myfamily(family):
    member = []
    def __init__(self):
        family.__init__(self,host = 'xiaoli')
        #注意self必須有,否則報錯
        print('hi')
    def add_member(self,member):
        self.member.append(member)
    def print_member(self):
        print("there are %d member : %s"%(len(self.member),self.member))
m = myfamily()
輸出結果:
r@r-Sys:~/python/now/review2$ python3 call_father1.py 
hi


如果不加self,那麼會出現如下報錯信息:
r@r-Sys:~/python/now/review2$ python3 call_father1.py 
Traceback (most recent call last):
  File "call_father1.py", line 17, in <module>
    m = myfamily()
  File "call_father1.py", line 10, in __init__
    family.__init__(host = 'xiaoli')
TypeError: __init__() missing 1 required positional argument: 'self'

方法二:在子類初始化方法中,通過super()函數來調用父類(超類)的初始化方法,代碼如下,

#coding=utf-8
class family(object):
    def __init__(self,host):
        self.host = host
    def printf(self):
        print('the hoster of the family is %s.'%self.host)
class myfamily(family):
    member = []
    def __init__(self):
        super(myfamily,self).__init__(host = 'xiaoli')
        #baohanself
        print('hi')
    def add_member(self,member):
        self.member.append(member)
    def print_member(self):
        print("there are %d member : %s"%(len(self.member),self.member))
m = myfamily()

python3:子類調用父類構造函數的兩種方法:

第一種方法:

class People:
 
    def __init__(self, name, age):
        self.name = name
        self.age = age
 
 
class Student(People):
 
    def __init__(self, name, age, grade):
        super().__init__(name, age)
        self.grade = grade

super().__init__(父類構造函數需要的參數,不包括self)

第二種方法:

父類.__init__(self,父類構造函數需要的參數)

class People:
 
    def __init__(self, name, age):
        self.name = name
        self.age = age
 
 
class Student(People):
 
    def __init__(self, name, age, grade):
        People.__init__(self, name, age)
        self.grade = grade

這種方法需要將self作爲參數傳遞。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章