老舊動漫秒變高清,B站推出通用 AI 影象超解析度模型:採用百萬級動漫資料訓練,二次元老婆更漂亮了
阿新 • • 發佈:2022-01-31
python繼承
多型
多型-單繼承,多繼承
class master1(object): def __init__(self): self.konfu="古法制作" def make(self): print(f'{self.konfu}美味豆腐') class master2(object): def __init__(self): self.konfu="簡單製作" def make(self): print(f'{self.konfu}美味海鮮') # 驗證單繼承 class apprentic1(master1): pass t1=apprentic1() # 物件訪問例項屬性 print(t1.konfu) # 例項 t1.make() # 驗證多繼承 class apprentice2(master1,master2): pass t2=apprentice2() print(t2.konfu) t2.make() # 一個類繼承多個類,預設第一個父類的屬性和功能方法
單繼承重寫(修改)父類同名屬性和方法
class master1(object): def __init__(self): self.konfu="古法制作" def make(self): print(f'{self.konfu}美味豆腐') # 驗證單繼承重定義修改父類同名屬性和方法 class apprentic1(master1): def __init__(self): self.konfu = "最新獨創法制作" def make(self): print(f'{self.konfu}更美味可口豆腐') t1=apprentic1() # 物件訪問例項修改的屬性 print(t1.konfu) # 修改的方法例項 t1.make()
檢視該類繼承了那些父類
- 方法解析順序, Method Resolution Order
class master1(object):
pass
class apprentic1(master1):
pass
class stu(apprentic1):
pass
print(stu.__mro__)
# 輸出
# (<class '__main__.stu'>, <class '__main__.apprentic1'>, <class '__main__.master1'>, <class 'object'>)
單繼承重寫(修改)父類同名屬性和方法後,如何再呼叫父類屬性
# self在定義時需要定義,但是在呼叫時會自動傳入。
# self的名字並不是規定死的,但是最好還是按照約定是用self
# self總是指呼叫時的類的例項。
class master1(object):
def __init__(self):
self.konfu="古法制作"
def make(self):
print(f'{self.konfu}美味豆腐')
# 驗證單繼承重定義修改父類同名屬性和方法
class apprentic1(master1):
def __init__(self):
self.konfu = "最新獨創法制作"
def make(self):
# 如果是先呼叫了了父類的屬性和方法,父類屬性會覆蓋子類屬性,故在呼叫屬性前,先呼叫自己子類的初始化
# 加自己的初始化!!!!
# 否則導致輸出為古法
# 屬性值是上一次呼叫的init呼叫的屬性值,所以如果沒有他就輸出古法
self.__init__()
print(f'{self.konfu}更美味可口豆腐')
def makemaster(self):
master1.__init__(self)
master1.make(self)
t1=apprentic1()
# 物件訪問例項修改的屬性
print(t1.konfu)
# 修改的方法例項
t1.make()
# 如何通過t1呼叫父類沒修過的方法
t1.makemaster()
# 如果make不自己定義,仍會輸出古法的了
t1.make()