用三個例項說明python類多型和過載。

黃哥Python培訓發表於2013-01-08
用三個例項說明python類多型和過載。


#coding:utf-8


"""


本程式碼寫在2013-1-7日下午4:00


先前寫的程式碼有誤,重新寫一個。


由sina微博"python愛好者所寫",提供"python培訓_python從零基礎到網頁採集和web開發培訓"


http://www.qy7788.com.cn/shiyongxinxi/shiyongxinxi161.html


用三個例項說明python類多型和過載。


同一個類中相同函式名,不同引數或引數個數實現過載。


python子類中重寫父類中的方式,就覆蓋了父類的方法。


python也可以實現多型,但過載不支援。


注意覆蓋父類的__init__方法有2種呼叫方式






"""


class MyClass(object):


   def __init__(self,name,address,telelphone,text):


       """self.name = "黃老師"


       self.address = "北京市海淀區永定路東街乙六號東輕賓館206室"


       self.telephone = "010-68165761"


       """


       self.name = name


       self.address = address


       self.telelphone = telelphone


       self.text = text






   def print_test(self,name):


       print self.name


       


   def print_test(self,address):


       print self.address


       


   def print_test(self,telelphone):


       print self.telelphone


       


   def print_test(self,text):


       print self.text










       


name = "黃老師"


address = "北京市海淀區永定路東街乙六號東輕賓館206室"


telephone = "010-68165761 qq:1465376564"


text = "python培訓_python從零基礎到網頁採集和web開發培訓"


       


mytest =MyClass(name,address,telephone,text)


mytest.print_test(name)


mytest.print_test(address)


mytest.print_test(telephone)


mytest.print_test(text)










#python實現多型例項一,注意覆蓋父類的__init__方法有2種呼叫方式


class AA(object):


   def __init__(self):


       pass


   def get(self):


       d=5


       return d


   


class BB(AA):


   def __init__(self):


       AA.__init__(self)


   def get(self):


       d=3


       return d


class DD(AA):


   def __init__(self):


       AA.__init__(self)


   def get(self):


       d=4


       return d










def getNum(cc):


   print cc.get()






first = AA()


second = BB()


third = DD()






getNum(first)


getNum(second)


getNum(third)






















#python實現多型例項二


class Animal(object):


   def __init__(self):


       pass


   def Eat(self):


       pass










class Chicken(Animal):


   def __init__(self):


       super(Chicken, self).__init__()


   def Eat(self):


       print 'the chicken has been eat'










class Dog(Animal):


   def __init__(self):


       super(Dog, self).__init__()


   def Eat(self):


       print 'the dog has been eat'










#實現一個呼叫的方法,這裡也用類來實現吧


class Person(object):


   """


    只需要通過引數來確定呼叫哪個方法。這只是python實現多型的一種.


   """


   def __init__(self,name):


       self.name = name


   def Feed(self, ped):


       ped.Eat()














Kobe = Person('Kobe')#給呼叫者取個名字吧


pedChicken = Chicken()#建立一個小雞寵物


pedDog = Dog()#建立一個小狗寵物


Kobe.Feed(pedChicken)#Feed方法根據傳入的引數不同呼叫


Kobe.Feed(pedDog)

相關文章