面向对象程序设计具有三大基本特征:封装、继承、多态。
(面向过程只考虑在函数中封装代码逻辑,而不考虑函数的归属关系)
(面向对象是一个更大的封装,根据对象职责明确函数的归属关系)
class Fridge():
def open(self):
print('打开冰箱门')
def pack(self, goods):
self.goods = goods
print('把%s装进冰箱' % self.goods)
def close(self):
print('关门')
fridgel = Fridge()
在开发过程中经常会遇到不想让对象的某些属性不被外界访问和随意修改的情况,这时可将这些属性定义为私有属性,再添加一个公有方法,用于私有属性的操作。私有属性定义以“__”开头,如__age。
class Fridge():
No = 0
Num = 0
# 自定义构造方法
def __init__(self):
Fridge.No + = 1
子类不能继承父类的私有属性和方法,但能自动拥有父类其他的属性和方法。如果子类对父类提供的属性和方法进行修改,叫重写。如果子类重新定义了父类方法后,还需要访问父类的同名方法,可以使用super关键字
class Fridge():
def __init__(self):
print('这是一个冰箱')
def open(self):
print('打开冰箱门')
def pack(self, goods):
self.goods = goods
print('把%s装进冰箱' % self.goods)
def close(self):
print('关门')
class Double_Door(Fridge):
def __init__(self): #重写父类方法
super().__init__() #super调用父类方法
print('这个是双开门冰箱')
fridge = Double_Door()
fridge.pack('大象') #继承父类方法
结果:
这是一个冰箱
这个是双开门冰箱
把大象装进冰箱