python中什么是继承

如题所述

继承是子类复用父类的属性和方法的机制,类的继承是以生活中继承为灵感设计的。
生活中继承的例子有很多,例如,汽车的发展历程就体现了继承。最早汽车的轮胎都是实心的,功能少,性能差,而如今汽车的功能越来越多,性能越来越好,这是经过一代一代的发展而来的,每一代比上一代扩充了一些功能,改进了一些性能。纵观整个汽车的发展史,每一代汽车都是在上一代汽车的特征和行为的基础之上,进行了设计和改良。这其中有些功能没有改变,有些功能是新增的,也有些功能经过了改良。例如,从第一代的汽车到现在的汽车,做交通工具这一特点始终都在沿用。
生活中汽车的例子,与计算机中的继承是非常相似的。这么一代又一代的更新是有好处的。
首先,节省了设计流程,不用闭门造车。
其次,在前一代汽车基础之上设计,这样原来重复的生产技术还可以复用,再设计一些新增的功能,这样就能大大地提高生产效率。
下面介绍一个实际案例,来说明继承的用处。
假设设计一个师生管理系统,具有学生和教师两种用户,需要设计两个类,一个学生类(Student),一个教师类(Teacher)。Student类有学号、姓名、性别、年龄、用户名、密码等属性,Teacher类有姓名、性别、年龄、用户名、密码、学历等属性,这两个类中都有属性的getter和setter方法。由此可知,这两个类中有许多相同的属性和方法,也就是说代码有冗余。为了避免这样的情况,就可以使用继承来优化设计。将Student类和Teacher类中相同的属性和方法抽取出来,单独作为一个父类,这个父类称为用户类(User),而Student类和Teacher类作为子类继承父类User。Student类和Teacher类中就只放自己特有的属性和方法即可。由于这两个类都继承User类,因此User类中的属性和方法,它们可以直接使用。需要指出的是,在继承中私有属性和私有方法是不能被继承的。
继承提高了代码的重用性,减少了代码和数据的冗余度。另外,如果要修改用户名属性,不采用继承的情况下,两个类的属性都需要修改,而使用继承后,只需要修改父类的用户名属性即可。由此可知,继承使代码的修改更加方便。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-02-15
可能你有C++的基础吧,C++确实可以不用带上this。
我把你的代码稍微改了一下,你可以分别看看cls1.n、cls2.n、self.n的输出。
class cls1:
n=3
class cls2(cls1):
def __init__(self,cls1=cls1):
cls2.n += 1
self.n += 2
print 'cls1.n:%s'%cls1.n
print 'cls2.n:%s'%cls2.n
print 'self.n:%s'%self.n

cls2()
print 'cls1.n:%s'%cls1.n
可以看出两个类和一个对象都可以在这里调用它们的n属性,如果只敲一个n别人读你的代码时就比较容易产生岐义,虽然少打了5个字符,但是不符合简单明确的pythonic哲学。
当然你也可以就认为python语法规则就是这么规定的。本回答被网友采纳
相似回答