面向对象有三大特性:
封装:根据职责将属性和方法封装到一个抽象类中 继承:实现代码的重用,相同的代码不需要重复的编写 多态:不同的对象调用相同的方法,产生不同的执行结果,增加代码灵活度
继承的语法
class类名(父类名)
pass
子类可以拥有父类的所有方法和属性
class Yeye():
def eat(self):
print("吃")
def drink(self):
print("喝")
class Baba(Yeye):
def du(self):
print("赌")
class Erzi(Baba):
def piao(self):
print("嫖")
ez = Erzi()
ez.eat()
ez.piao()
ez.du()
如果对父类的方法不满意,可以对父类的方法进行重写。实现方式为:在子类中定义一个和父类同名的方法并且实现
class Yeye():
def eat(self):
print("吃")
def drink(self):
print("喝")
class Baba(Yeye):
def du(self):
print("赌")
class Erzi(Baba):
def piao(self):
print("嫖")
def drink(self):
print("喝的少")
ez = Erzi()
ez.drink()
ez.piao()
ez.du()
如果想在子类中调用父类代码并且还要重写子类,可以用super().父类方法 调用父类代码
class Yeye():
def eat(self):
print("吃")
def drink(self):
print("喝")
class Baba(Yeye):
def du(self):
print("赌")
class Erzi(Baba):
def piao(self):
print("嫖")
def drink(self):
print("喝的少")
Baba.du(self) # python 2.0调用父类方法
super().drink() # python3.0调用父类方法
ez = Erzi()
ez.drink()
ez.piao()
ez.du()
在子类中不能访问父类中的私有方法和属性,但是可以通过公有属性和方法间接访问私有属性和方法
class Women:
def __init__(self):
self.__age = 18
def __private(self):
print("私有方法")
def secret(self):
print("年龄是 %d" % self.__age)
self.__private()
class Daughter(Women):
def method(self):
self.secret()
nver = Daughter()
nver.method()
|