用三个实例说明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)
#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)