每周学点土壤知识 2018-03-23
昨天被室友拖着去吃鸡去了,所以没有学习,该反省。只有今天多学习一点,将昨天的补回来。
今天学习了python的多继承。
觉得多继承还是有点难,今天在学习多继承的实收,一不小心将一个父类的构造函数的名称写错了,然后就出现了bug,找了好久,才发现是上面写错了,结果编辑器报错的地方与我真正出错的地方差了好远,所以大家写代码要仔细一点,找bug真的是恼火。
好了,言归正传,开始正文。
class People(object): # 这是第一个父类<br /> name=""<br /> age=0<br /> __weight=0 # 私有属性<br /><br /> def __init__(self,name,age,weight):<br /> self.name=name<br /> self.age=age<br /> self.__weight=weight<br /><br /> def speak(self):<br /> print(self.name,self.age,self.__weight)<br /><br /><br /># 在继承类的时候 类名后面的括号里写的就是你需要继承的类,可以看出来这是一个单继承<br />class Student(People): #这里定义了一个子类,而且继承了上面的people类<br /> grade=""<br /> def __init__(self,name,age,weight,grade):<br /> People.__init__(self,name,age,weight)<br /> self.grade=grade<br /><br /> def print_sutdent(self):<br /> print(self.grade)<br /><br /># 在这儿再创建一个类<br /><br />class Speaker(object):<br /> topic=""<br /> name=""<br /> def __init__(self,name,topic):<br /> self.name=name<br /> self.topic=topic<br /><br /> def print_speak(self):<br /> print(self.name,self.topic)<br /><br /># 这儿就是今天的主角了,类的多继承,可以看到,类名之后的括号里,就是写的你需要继承的父类的名称。<br /># 注意,父类的书序很重要,比如说你需要调用一个子类没有而父类却有的方法,那么python解释器将会在父类之中从左到右寻找你调用的方法。<br /><br />class Sample(Student,Speaker): <br /> a=""<br /># 这里很重要,这里是继承父类的构造函数的写法<br /> def __init__(self,name,age,weight,grade,topic,a):<br /> Student.__init__(self,name,age,weight,grade)<br /> Speaker.__init__(self,name,topic)<br /> self.a=a<br /><br /># 这里叫做方法重写:意思就是如果父类中存在这个方法,但是功能不能满足子类的需求,那么你就可以在子类中重新定义一个函数名称和父类的相同,<br />#然后这个实例在调用该方法的时候,就会调用子类中的你重写的方法。<br /> def print_speak(self):<br /> print(self.name,self.age,self.grade,self.topic,self.a)<br /><br /># 使用子类生成实例<br /><br />test=Sample("tim",25,80,99,"python",10)<br /><br /># 调用子类中重写的方法<br />test.print_speak()<br /><br /><br />