前言
本文為〈Python 類別與例外〉一文的學習筆記。
建立類別
假想一個 Animal
類別:
1 2 3 4 5 6 7
| >>> class Animal(object): color = 'white' def __init__(self, name): self.name = name >>> a = Animal('動物') >>> a.name '動物'
|
__init__()
函式,表示宣告類別時會自動執行的函式,即建構子。第一個參數 self
是必須的,表示當前類別。
繼承類別
假想一個 Dog
類別,繼承原有的 Animal
類別。
1 2 3 4 5 6
| >>> class Dog(Animal): def __init__(self, name): super().__init__('小狗' + name) >>> d = Dog('小白') >>> d.name '小狗小白'
|
覆寫類別
在子類別使用相同函式覆寫父類別 sound()
函式。
1 2 3 4 5 6 7 8 9 10 11 12 13
| >>> class Animal(object): def __init__(self, name): self.name = name def sound(self): pass >>> class Dog(Animal): def __init__(self, name): super().__init__('小狗' + name) def sound(self): return '汪汪叫' >>> d = Dog('小白') >>> d.sound() '汪汪叫'
|
多型
多個類別可以定義相同的函式名稱。
以下範例 Dog
類別和 Bird
類別都有 who()
函式。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| >>> class Animal(object): def __init__(self, name): self.name = name def who(self): return self.name def sound(self): pass >>> class Dog(Animal): def __init__(self, name): super().__init__('小狗' + name) def sound(self): return '汪汪叫' >>> class Bird(): def __init__(self, name): self.name = '小鳥' + name def who(self): return self.name def sound(self): return '啾啾叫' >>> def talk(obj): print(obj.who(), '正在', obj.sound()) >>> d = Dog('小白') talk(d) 小狗小白 正在 汪汪叫 >>> b = Bird('小黃') talk(b) 小鳥小黃 正在 啾啾叫
|
定義可視性
在 Python 的類別裡,所有的方法都預設為 Public。
在變數或函式名稱前,加上雙底線「__
」,可使其無法被繼承、無法被外部訪問。
1 2 3 4 5 6 7 8 9 10 11 12 13
| >>> class Animal(object): def __init__(self, name): self.__name = name def show_name(self): return self.__name >>> class Dog(Animal): def __init__(self, name): super().__init__('小狗' + name) >>> d = Dog('小白') >>> d.show_name() '小狗小白' >>> d.__name AttributeError
|