類別與繼承

摘要:類別與繼承

  1. Python所有的資料型態(data type)都是物件(objects)。
  2. 所有的類別成員(class member)都是公開(public)成員,意思是每個物件中的屬性都可以去存取使用它。
  3. 成員函數是虛擬(virtual)函數,子類別都可以去繼承複寫(override)父類別的函數,而且各自呼叫各類別的函數,即子類別呼叫子類別的函數,父類別呼叫父類別的函數。
  4. 沒有特別的建構子(constructors )和解構子(destructors)
  5. 一個類別可以繼承(inherit)多個父類別。
  6. 類別裡面的函數宣告,第一個參數一定是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