1. 程式人生 > >pyhon類繼承

pyhon類繼承

style pos 代碼 on() 一個 實例 super true body

1,python類的繼承

class A(object):
    name =‘eason‘
    age = ‘22‘
    def __init__(self):
        print ‘我是A的構造函數!!!‘
    def getname(self):
        return self.name
    def getage(self):
        return self.age

class B(object):
    name = ‘linsir‘
    age=‘30‘
    def __init__(self):
        print ‘我是B的構造函數!!!‘
    def getname(self):
        return self.name
    def getage(self):
        return self.age

class C(A,B):
    def __init__(self):
        print  ‘我是我自己的構造函數‘
        #調用父類的構造函數
        super(C,self).__init__()
    name = ‘testsir‘
    age = ‘25‘

person1 = C()
print person1.getname()
print person1.getage()

運行結果:
我是我自己的構造函數
我是A的構造函數!!!
testsir
25

 

子類如果沒有構造函數,默認會使用父類的構造函數,如果繼承多個父類,看哪個父類寫在前面就調用哪個父類的構造。

C繼承了A和B ,所以A和B為C的父類或者說是基類。

A和B為C的子類,或者說是AB的派生類。

調用父類的第一個方法:可以用super函數。super(son,self).__init__() 調用父類的第二個方法:父類.方法名(self),不建議使用,因為如果有多個調用父類的方法的代碼,如果類的名稱一旦發生變化,則意味這後面調用父類的方法的代碼都得變。 2,python方法重寫
class father(object):
    def __init__(self):
        self.name = ‘tom‘
        print ‘father‘

    def func(self):
        print ‘father.func‘

    def bad(self):
        print ‘father抽煙喝酒 ‘

class son(father):
    def __init__(self):
        super(son,self).__init__()
        print ‘son‘

    def sonc(self):
        print ‘son.sonc‘

    #重寫bad函數,不在使用父類的函數。如果想調用父類的函數,可以用super執行父類的方法。
    def bad(self):
        #調用
#       super(son, self).bad()
#         father.bad(self)
        print ‘son賭博‘
son1 = son()
son1.sonc()
son1.bad()


運行結果:
father
son
son.sonc
son賭博

  

son1 = son()實例化一個對象出來,調用bad方法,由於子類已經有bad方法,故無需重父類調用,即達到父類方法的重寫功能。




pyhon類繼承