当前位置: 首页 > 后端技术 > Python

Python中的继承

时间:2023-03-25 20:10:18 Python

继承:面向对象编程语言的一个重要特征就是继承。继承提供了在现有类的基础上创建新类的方法。被继承的子类拥有被继承父类的所有方法,在此基础上,子类还可以添加自己专有的方法。继承是类的一个强大特性。有些程序没有继承会很复杂,但是有了继承,就会写起来简单易懂。另外,通过继承,还可以复用以前编写的代码,因为可以自定义父类的方法,而不必修改它们。有时,继承反映了问题的自然结构,使程序更容易理解。任何事物都有二元性。继承还有可能使程序难以阅读。调用方法时,有时很难分辨它是在哪里定义的。相关代码可能分散在多个模块中。所以,有些事情利用继承的特性可以做好,不利用继承也可能做好。如果问题的自然结构是不倾向于用继承来解决的,那就不要用,也不好用。继承的定义:定义了一个父类BaseClass,那么子类定义方法如下:classDerivedClass(BaseClass):子类的实例化方法没有什么特别的。如果要引用子类的某个属性,首先要在子类中查找,如果没有,就到父类中去寻找它的定义,如果没有,就一直往上找,直到找到为止。查找方法的方式与查找属性的方式相同。子类的方法可以重新定义父类的方法,如果觉得父类的方法不能满足要求。有时,子类中的方法可以直接调用父类中的方法,如下:BaseClass.method(self,arguments)1.定义一个父类:>>>classPerson:...def__init__(self,name=None,age=1,sex="men"):...self.name=name;...self.age=age;...self.sex=sex;......defdisplay(self):...print"name:%-20s"%self.name;...print"age:%-20d"%self.age;...print"sex:%-20s"%self.sex;.........接着定义Person的学生类>>>classStudent(Person):...def__init__(self,name=None,age=1,sex="men",grade=0):...Person.__init__(self,name,age,sex)...self.grade=grade;......defdisplay(self):...Person.display(self)。..打印“等级:%-20d”%self.grade;...>>>私有方法:C++语言中有私有方法的概念,私有方法只能被类的内部方法调用。在Python中,类的私有方法和私有属性不能从类外部调用。一个类的方法和属性是公共的还是私有的,可以从它的名字来判断。如果名称以两个下划线开头,但不以两个下划线结尾,则它是私有的。其余的都是公开的。请看下面的例子:>>>importmath>>>classPoint:...def__init__(self,x=0,y=0):...self.x=x;...self.y=y;......def__str__(self):...return'('+str(self.x)+','+str(self.y)+')';...>>>类线:...def__init__(self,p1=Point(),p2=Point()):...self.__p1=p1;...self.__p2=p2;......def__str__(self):...returnstr(self.__p1)+str(self.__p2);...def__distance(self):...tx=math.pow(self.__p1.x,2)+math.pow(self.__p2.x,2);...ty=math.pow(self.__p1.y,2)+math.pow(self.__p2.y,2));...returnmath.sqrt(tx+ty);......deflength(self):...printself.__distance();