1. 程式人生 > >【python】繼承、多重繼承

【python】繼承、多重繼承

python

1)繼承

基類
class BaseClass:
    def __init__(self,name,age):
        self.name = name
        self.age = age
        print "baseclass is inited"
    
    def speak(self,name):
        print "base class is speak:%s"  %name
        
if __name__ == "__main__":
    b = BaseClass()
派生類
import BaseModel

class SubClass(BaseModel.BaseClass):
    def __init__(self,name,age,salary):
        BaseModel.BaseClass.__init__(self,name,age)  調用基類的函數,需要加上類名
        self.salary = salary
        print "SubClass is inited and salary is:%s" %self.salary
        
    def talk(self,sth):
        print "%s talking %s"  %(self,name,sth)
        BaseModel.BaseClass.speak(self,sth)
        
if __name__ == "__main__":
    s = SubClass(‘John‘,1,800)
    s.talk("a story")

上述例子,在派生類裏面重新定義了__init__方法;要是沒有定義的話,默認調用基類裏面的構造方法.


2)多重繼承

多重繼承算法

class D(object):  
    def foo(self):  
        print "class D"  
  
class B(D):  
    pass  
  
class C(D):  
    def foo(self):  
        print "class C"  
  
class A(B, C):  
    pass  
  
f = A()  
f.foo()  

新式類的結果為class C(A--B--C-D-object);老式類結果為class D(A-B-D-C--object);


本文出自 “孔小發愛吃魚” 博客,謝絕轉載!

【python】繼承、多重繼承