1. 程式人生 > 資訊 >老舊動漫秒變高清,B站推出通用 AI 影象超解析度模型:採用百萬級動漫資料訓練,二次元老婆更漂亮了

老舊動漫秒變高清,B站推出通用 AI 影象超解析度模型:採用百萬級動漫資料訓練,二次元老婆更漂亮了

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()