iT邦幫忙

2023 iThome 鐵人賽

DAY 7
0

今天的內容為DAY6的延伸,份量不多,就來練習一下吧~

繼承(Inheritance)

繼承是OOP的一個重要概念,創建一個新類別(子類別),可以繼承另一類別(父類別)的屬性和方法。
重用程式碼建立層次結構。

class Animal:
    def __init__(self, name):
        self.name = name
    
    def speak(self):
        pass

class Dog(Animal):
    def speak(self):
        return f"{self.name} says Woof!"

class Cat(Animal):
    def speak(self):
        return f"{self.name} says Meow!"

dog = Dog("Fido")
cat = Cat("Whiskers")

print(dog.speak())  # Output: "Fido says Woof!"
print(cat.speak())  # Output: "Whiskers says Meow!"

在上面的示例中,Dog 和 Cat 類別都繼承自 Animal 父類別,它們都有一個 speak 方法,但是每個方法的實現方式不同。

class SuperClass:
    def __init__(self, value):
        self.value = value
    def method(self):
        print("Method called")
class SubClass(SuperClass):
    def __init__(self, value):
    # Call the superclass's __init__ method
        super().__init__(value)
    def method(self):
    # Call the superclass's method
        super().method()
print("Subclass method called")
# Create an instance of SubClass
obj = SubClass(10)
# Call the method of SubClass
obj.method() # Output: "Method called", "Subclass method called"
print(obj.value)
obj = SubClass("SUB")
print(obj.value)
#Subclass method called
#Method called
#10
#SUB

多重繼承(Multiple Inheritance)

Python允許一個子類別繼承多個父類別的特性,這種情況下,子類別繼承了多個父類別的屬性和方法。

class A:
    def method_a(self):
        print("Method A")

class B:
    def method_b(self):
        print("Method B")

class C(A, B):
    def method_c(self):
        print("Method C")

obj = C()
obj.method_a()  # Output: "Method A"
obj.method_b()  # Output: "Method B"
obj.method_c()  # Output: "Method C"

在這個示例中,類別 C 同時繼承自類別 A 和 B,因此它可以訪問這兩個父類別的方法。

封裝(Encapsulation)

封裝是OOP中的另一個重要概念,它指的是將類別的屬性和方法保護起來,以防止外部直接訪問或修改。在Python中,我們可以先使用單個下劃線(_)前綴屬性名稱來表示該屬性是私有的,建議不要直接訪問。

class MyClass:
    def __init__(self, value):
        self._value = value  # 單個下劃線表示半私有屬性
    
    def get_value(self):
        return self._value
    
    def set_value(self, new_value):
        if new_value >= 0:
            self._value = new_value

obj = MyClass(10)
print(obj.get_value())  # Output: 10
obj.set_value(20)
print(obj.get_value())  # Output: 20


上一篇
[DAY6] Python基礎程式進階 (一)
下一篇
[DAY8] Python基礎程式應用(一)
系列文
關於我從基礎程設轉職到人工智慧入門30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言