覆寫方法

  • 如你所見,新類別一開始就會繼承它的父類別的任何東西
  • 接下來,你會看到如何「替換或覆寫父類別的方法」
  • 子類別有些地方應該會與父類別不一樣 → 否則,定義一個新類別的目的是什麼?

【範例一】更改/覆寫「子類別」的「函式方法的行為」

>>> class 父類別名稱():
        def 函式名稱(self):
            print("字串1")

>>> class 子類別名稱(父類別名稱):
        def 函式名稱(self):
            print("字串2")

# 用這些類別來製作兩個物件:
>>> 文字1 = 父類別名稱()
>>> 文字2 = 子類別名稱()

# 它們說了些什麼?
>>> 文字1.函式名稱()
字串1
>>> 文字2.函式名稱()
字串2
>>> class Car():
    def exclaim(self):
        print("I'm a Car!")

# Yugo 有些地方應該會與 Car 不一樣,否則,定義一個新類別的目的是什麼?
# 更改 Yugo 的 exclaim() 方法的行為(覆寫了 exclaim() 方法)
>>> class Yugo():
    def exclaim(self):
        print("I'm a Yugo! Much like a Car, but more Yugo-ish.")

# 接著,用這些類別來製作兩個物件
>>> give_me_a_car = Car()
>>> give_me_a_yugo = Yugo()

# 他們說了些什麼?
>>> give_me_a_car.exclaim()
I'm a Car!
>>> give_me_a_yugo.exclaim()
I'm a Yugo! Much like a Car, but more Yugo-ish.

【範例二】可以覆寫任何方法,包括 init

# 我們可以覆寫任何方法,包括 __init__()
>>> class 父類別名稱():
        def __init__(self, name):
            self.name = name

>>> class 子類別名稱1(父類別名稱):
        def __init__(self, name):
            self.name = "字串1" + name

>>> class 子類別名稱2(父類別名稱):
        def __init__(self, name):
            delf.name = name + "字串2"

# 在這些案例中,初始化方法 __init__() 會與「父類別名稱」接收「相同的引數」,但會將「name 的值」存在「物件實例內不同的地方」
>>> 文字1 = 父類別名稱('引數1')
>>> 文字2 = 子類別名稱('引數2')
>>> 文字3 = 子類別名稱('引數2')

>>> print(文字1.name)
引數1
>>> print(文字2.name)
字串1 引數2
>>> print(文字3.name)
引數2 字串2
# 我們可以覆寫任何方法,包括 __init__()
# 使用稍早的 Person 類別
>>> class Person():
    def __init__(self, name):
        self.name = name

# 製作代表醫生(MDPerson)與律師(JDPerson)的子類別
>>> class MDPerson(Person):
    def __init__(self, name):
        self.name = "Doctor " + name

>>> class JDPerson(Person):
    def __init__(self, name):
        self.name = name + ", Esquire"

# 在這些案例中,初始化方法 __init__() 會與父類別 Person 接收「相同的引數」,但會將 name 的值存在「物件實例內不同的地方」
>>> person = Person('Fudd')
>>> doctor = MDPerson('Fudd')
>>> lawyer = JDPerson('Fudd')

>>> print(person.name)
Fudd
>>> print(doctor.name)
Doctor Fudd
>>> print(lawyer.name)
Fudd, Esquire

results matching ""

    No results matching ""