為何要這樣設計
有些屬性或方法只想在類別裡面使用不想公開,保護重要的邏輯。
優點
class DoWhat:
def work(self):
print("Working")
self.__sleep()
def __sleep(self):
print("Sleeping")
User = DoWhat()
User.work() #Working Sleeping
User.__sleep() #AttributeError: 'DoWhat' object has no attribute '__sleep'
為何要這樣設計
兩個類別之間有共用的屬性或函式,繼承後就可以拿出來用才不會一直重複。
優點
class Math:
def add(self, x, y):
return x + y
class Test(Math):
def caculate(self):
A = 100
B = 20
add = self.add(A, B)
print(add)
test = Test()
test.caculate() #120
為何要這樣設計
讓各類別有一致性的介面,方便擴充及維護。
優點
class Name:
def who(self):
print("who am i ?")
class Danny(Name):
def me(self):
print("I am Dany")
class Jason(Name):
def me(self):
print("I am Jason")
Danny = Danny()
Danny.me()
Jason = Jason()
Jason.me()
這邊的意思是,如果子類別跟父類別有相同名稱的方法,子類別的會覆蓋父類別的方法,但如果子類別沒有的話就會執行父類別的方法,結果如下。
class Father:
def me(self):
print("I am Father.")
class Son(Father):
# def me(self):
# print("I am Son.")
pass
son = Son()
son.me() #I am Son.
# 把son的me方法註解掉後
son.me() #I am Father.