Python語法第10講:面向對象之繼承

繼承指的是子類可以繼承父類的資源,在Python中支持多繼承,也就是說一個兒子可以有多個爸爸

1、繼承

在Python中繼承顯得十分的簡潔,如果一個類繼承自另一個類,只需將父類放到小括號中添加到子類類名後面即可,多個父類用半角逗號隔開

#基類
class Animal:

    def __init__(self, name): #構造器
        self.name = name
        
    def eat(self):
        print("%s 吃東西" %self.name)
        
    def drink(self):
        print("%s 喝水" %self.name)

#子類
class Dog(Animal): #Dog類繼承自Animal類,python支持多繼承,多個父類用逗號隔開

    def __init__(self, name): #構造器
        super().__init__(name) #調用父類的構造器
        
    def eat(self): #重寫父類的eat方法
        print("%s 啃骨頭" %self.name)


d = Dog("金毛")
d.drink()
d.eat()
2、常用的函數

#常用的BIF
print(d.__dict__) #查看對象所擁有的屬性

result = issubclass(Dog, Animal) #判斷一個類是否是另一個類的子類
print(result)

result = isinstance(d, Dog) #判斷一個實例對象是否屬於一個類
print(result)

result = hasattr(d, 'name') #判斷一個實例對象中是否有某個屬性
print(result)

result = getattr(d, "name", "訪問的參數不存在") #獲取實例對象的屬性值,如果不存在就賦默認值
print(result)

setattr(d, "name", "一隻流浪狗") #給實例對象的屬性賦值
print(getattr(d, "name"))

#delattr(d, "name") #刪除實例對象的屬性
3、常用的魔法方法

3.1、__new__()

作用是實例化對象時被回調的方法,優先級高於構造方法,__new__()方法要求返回一個對象的實例

#魔法方法:__new__()
class CapStr(str): #繼承自字符串類
    def __new__(cls, something): #__new__()函數,當類被實例化時調用,優先於構造函數
        something = something.upper()
        return str.__new__(cls, something)

result = CapStr("i love u")
print(result)
3.2、__del__()

析構函數,和構造函數是對立的,也就是當對象被銷燬時回調析構函數

#魔法方法:__del__()
class life:
    
    def __init__(self): #構造函數
        print("__init__")

    def __del__(self): #析構函數
        print("__del__")

l = life()
del l
3.3、__init()__

構造函數,一般用於初始化成員變量





發佈了62 篇原創文章 · 獲贊 148 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章