1. 程式人生 > >類總結

類總結

.html 定義 print load body line logs 類的繼承 sub

技術分享圖片
class ParentClass1: #定義父類
    pass

class ParentClass2: #定義父類
    pass

class SubClass1(ParentClass1): #單繼承,基類是ParentClass1,派生類是SubClass
    pass

class SubClass2(ParentClass1,ParentClass2): #python支持多繼承,用逗號分隔開多個繼承的類
    pass
python中類的繼承分為:單繼承和多繼承 技術分享圖片
>>> SubClass1.__bases__ #__base__只查看從左到右繼承的第一個子類,__bases__則是查看所有繼承的父類
(<class __main__.ParentClass1>,) >>> SubClass2.__bases__ (<class __main__.ParentClass1>, <class __main__.ParentClass2>)
查看繼承 技術分享圖片
1.只有在python2中才分新式類和經典類,python3中統一都是新式類
2.在python2中,沒有顯式的繼承object類的類,以及該類的子類,都是經典類
3.在python2中,顯式地聲明繼承object的類,以及該類的子類,都是新式類
3.在python3中,無論是否繼承object,都默認繼承object,即python3中所有類均為新式類
經典類新式類 技術分享圖片
class Vehicle: #定義交通工具類
     Country=China
     def __init__(self,name,speed,load,power):
         self.name=name
         self.speed=speed
         self.load=load
         self.power=power

     def run(self):
         print(開動啦...)

class Subway(Vehicle): #地鐵
    def __init__(self,name,speed,load,power,line):
        
#super(Subway,self) 就相當於實例本身 在python3中super()等同於super(Subway,self) super().__init__(name,speed,load,power) self.line=line def run(self): print(地鐵%s號線歡迎您 %self.line) super(Subway,self).run() class Mobike(Vehicle):#摩拜單車 pass line13=Subway(中國地鐵,180m/s,1000人/箱,,13) line13.run()
繼承--子類調用父類方法1 技術分享圖片
class Vehicle: #定義交通工具類
     Country=China
     def __init__(self,name,speed,load,power):
         self.name=name
         self.speed=speed
         self.load=load
         self.power=power

     def run(self):
         print(開動啦...)

class Subway(Vehicle): #地鐵
    def __init__(self,name,speed,load,power,line):
        Vehicle.__init__(self,name,speed,load,power)
        self.line=line

    def run(self):
        print(地鐵%s號線歡迎您 %self.line)
        Vehicle.run(self)

line13=Subway(中國地鐵,180m/s,1000人/箱,,13)
line13.run()
繼承--子類調用父類方法2 技術分享圖片
#A沒有繼承B,但是A內super會基於C.mro()繼續往後找
class A:
    def test(self):
        super().test()
class B:
    def test(self):
        print(from B)
class C(A,B):
    pass

c=C()
c.test() #打印結果:from B


print(C.mro())
#[<class ‘__main__.C‘>, <class ‘__main__.A‘>, <class ‘__main__.B‘>, <class ‘object‘>]
繼承關系mro 技術分享圖片
isinstance(obj,cls)檢查是否obj是否是類 cls 的對象

issubclass(sub, super)檢查sub類是否是 super 類的派生類
isinstance(obj,cls)和issubclass(sub,super)

高級:參考鏈接

類總結