#!/usr/bin/python3#类定义classpeople:#定义基本属性
name =''
age =0#定义私有属性,私有属性在类外部无法直接进行访问
__weight =0#定义构造方法def__init__(self,n,a,w):
self.name = n
self.age = a
self.__weight = w
defspeak(self):print("%s 说: 我 %d 岁。"%(self.name,self.age))# 实例化类
p = people('runoob',10,30)
p.speak()
#!/usr/bin/python3#类定义classpeople:#定义基本属性
name =''
age =0#定义私有属性,私有属性在类外部无法直接进行访问
__weight =0#定义构造方法def__init__(self,n,a,w):
self.name = n
self.age = a
self.__weight = w
defspeak(self):print("%s 说: 我 %d 岁。"%(self.name,self.age))#单继承示例classstudent(people):
grade =''def__init__(self,n,a,w,g):#调用父类的构函
people.__init__(self,n,a,w)
self.grade = g
#覆写父类的方法defspeak(self):print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade))#另一个类,多重继承之前的准备classspeaker():
topic =''
name =''def__init__(self,n,t):
self.name = n
self.topic = t
defspeak(self):print("我叫 %s,我是一个演说家,我演讲的主题是 %s"%(self.name,self.topic))#多重继承classsample(speaker,student):
a =''def__init__(self,n,a,w,g,t):
student.__init__(self,n,a,w,g)
speaker.__init__(self,n,t)
test = sample("Tim",25,80,4,"Python")
test.speak()#方法名同,默认调用的是在括号中排前地父类的方法
执行以上程序输出结果为:
我叫 Tim,我是一个演说家,我演讲的主题是 Python
四、方法重写
Python同样有限的支持多继承形式。多继承的类定义形如下例:
#!/usr/bin/python3classParent:# 定义父类defmyMethod(self):print('调用父类方法')classChild(Parent):# 定义子类defmyMethod(self):print('调用子类方法')
c = Child()# 子类实例
c.myMethod()# 子类调用重写方法super(Child,c).myMethod()#用子类对象调用父类已被覆盖的方法