摘要:類別與繼承
- Python所有的資料型態(data type)都是物件(objects)。
- 所有的類別成員(class member)都是公開(public)成員,意思是每個物件中的屬性都可以去存取使用它。
- 成員函數是虛擬(virtual)函數,子類別都可以去繼承複寫(override)父類別的函數,而且各自呼叫各類別的函數,即子類別呼叫子類別的函數,父類別呼叫父類別的函數。
- 沒有特別的建構子(constructors )和解構子(destructors)
- 一個類別可以繼承(inherit)多個父類別。
- 類別裡面的函數宣告,第一個參數一定是self關鍵字。
# -*- coding: utf-8 -*- #類別與繼承介紹 class Animal: def __init__(self,name,age=0): #初始化設定 Python 只能有單一建構子 age 當無設定參數時可自動帶預設值 0 self.name = name self.age = age def Run(self): #定義 Method return u'{0} 我會跑喔!!'.format(self.name) def Eat(self): #定義 Method print u'我會吃' #注意該方法並無回傳 只接輸出 def Age(self): return u'{0} 的 Age {1}'.format(self.name,self.age) #注意該方法回傳方式 return class Cat(Animal): #Cat 繼承 Animal def __init__(self): #當 Cat 可改寫 Animal 的 建構子(__init__) , 但一樣只能維持一個定義 pass def Climb(self): #自行定義該類別的方法(Method) return u'我是貓 我會爬喔!!' class Dog(Animal): #Dog 繼承 Animal pass print Animal(u'Tom').Run() print u'------分隔線---------' print Cat().Eat() #使用Print 輸出方式 會多回傳一個 None print Cat().Climb() print Dog('Tom',10).Age() #使用Print 輸出方式
結果:
Tom 我會跑喔!!
------分隔線---------
我會吃
None
我是貓 我會爬喔!!
Tom 的 Age 10