代码如下:
class Student(object):
def __init__(self,name,age,school):
self.__name = name
self.__age = age
self.__school = school
def toString(self):
print('我是%s,我%s 岁了,在%s 上学.' %(self.__name,self.__age,self.__school))
class XiaoMing(Student):
def __init__(self,name,age,school):
self.__name = name
self.__age = age
self.__school = school
''' 覆写父类 toString()方法'''
# def toString(self):
# print('我是%s,我%s 岁了,在%s 上学.' %(self.__name,self.__age,self.__school))
''' 接受 Student 任何子类对象'''
def fun(stu):
stu.toString()
###测试
xm = XiaoMing('小明',25,'北大')
fun(xm)
按照继承, XiaoMing
继承自 Student
, 且属性是一模一样的,则toString
函数再写一遍是多余的, 道理讲,应该直接使用父类的 toString
方法,就可以了, 但是我去掉XiaoMing
的toString
方法后,就找不到 自身实例的私有属性了, 因为 python 解释器将私有属性名改变了, 我就觉得在这里多态基本都是废的, 代码复用完全无效了,
顺便问下大家, 继承/多态 在python中还有那些有用的地方?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.