Hi 大家好,
今天要開始介紹基礎語法中的物件導向篇之續集,那我們開始吧!
Q: 什麼是抽象方法
A: 指的是在上層類別中,只先定義但沒有具體實現的方法,然後在子類別必須要實現這些方法。
abc模組
@abstractmethod
裝飾器可以使用Shape
類別,繼承ABC模組
,使用@abstractmethod
裝飾器定義抽象方法from abc import ABC, abstractmethod
class Shape(ABC):
# 定義抽象基底類別
@abstractmethod
def area(self): <==== 只有定義抽象方法,未具體實現方法內容
pass
Square
、Circle
繼承上層類別Shape
,並且實作抽象方法 area(self)
# Square 類別實現 Shape 抽象方法
class Square(Shape):
def __init__(self, side_length):
self.side_length = side_length
def area(self): <==== 實現抽象方法內容
return self.side_length ** 2
# Circle 類別實現 Shape 抽象方法
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self): <==== 實現抽象方法內容
return 3.14 * self.radius ** 2
square = Square(side_length=10)
circle = Circle(radius=20)
area()
方法,印出結果print(square.area())
print(circle.area())
PS D:\Project\practice> python hi.py
100
1256.0
PS D:\Project\practice>
Q: 什麼是魔術方法?
A: 常被當作是Python的黑魔法,不需要去重新定義或架構一個方法,直接使用即可,或是在特殊形況下Python會自動調用,是已經存在且綁定在類別中的特殊方法。
定義方式
__
開頭和結尾的方法如何使用
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
# 定義加的方法
def add(self):
return self.x + self.y
point = Point(2, 3)
result = point.add()
print(result)
PS D:\Project\practice> python hi.py
5
PS D:\Project\practice>
黑魔法
方式來達成class Point:
def __init__(self, value):
self.value = value
# 定義物件的字串表示
def __str__(self):
return f'Value: {self.value}'
# 定義加法行為
def __add__(self, other):
return Point(self.value + other.value)
# 定義等於行為
def __eq__(self, other):
return self.value == other.value
# 創建兩個 Point 物件
point_a = Point(2)
point_b = Point(3)
# 使用__str__黑魔法
print(point_a)
print(point_b)
# 使用__add__黑魔法
print(point_a + point_b)
# 使用__eq__黑魔法
print(point_a == point_b)
PS D:\Project\practice> python hi.py
Value: 2 <==== 使用__str__黑魔法
Value: 3 <==== 使用__str__黑魔法
Value: 5 <==== 使用__add__黑魔法
False <==== 使用__eq__黑魔法
PS D:\Project\practice>
那今天就介紹到這裡,我們明天見~