Python3教程
编写类时,并非总是要从空白开始。如果你要编写的类是另一个现成类的特殊版本,可使用继承 。一个类继承 另一个类时,它将自动获得另一个类的所有属性和方法;原有的 类称为父类 ,而新类称为子类 。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。
例如,下面来定义student实例:
实例(Python 3.0+)
#!/usr/bin/python3 #类定义 class people: #定义基本属性 name = '' age = 0 #定义私有属性,私有属性在类外部无法直接进行访问 __weight = 0 #定义构造方法 def __init__(self,n,a,w): self.name = n self.age = a self.__weight = w def speak(self): print("%s 说: 我 %d 岁。" %(self.name,self.age)) #单继承示例 class student(people): grade = '' def __init__(self,n,a,w,g): #调用父类的构函 people.__init__(self,n,a,w) #自定义方法 self.grade = g
重写父类的方法 对于父类的方法,只要它不符合子类模拟的实物的行为,都可对其进行重写。为此,可在子类中定义一个这样的方法,即它与要重写的父类方法同名。这样,Python将不会考虑这
个父类方法,而只关注你在子类中定义的相应方法。
#重写父类的方法
#重写父类的方法 def speak(self): print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade)) s = student('ken',10,60,3) s.speak()
输出:
ken 说: 我 10 岁了,我在读 3 年级
同一个方法在不同的类中最终呈现出不同的效果,即为多态。
class Animal: def __init__(self,name): self.name = name def talk(self): pass @staticmethod #静态方法使不需要实例化就可以调用。实现了一种接口,多种实现,可以后续对象可以重复调用这个接口 def animal_talk(self): self.talk() class Cat(Animal): def talk(self): print('Meow') class Dog(Animal): def talk(self): print('Woof Woof') d = Dog('asd') d.talk() c = Cat('zxc') c.talk() #能不能通过一种接口,使它们都可以叫 Animal.animal_talk(c) Animal.animal_talk(d)