摘要:類別與繼承
- 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