持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情
三大要素
封装,继承和多态是面向对象编程的三大要素。
封装
一个类包含数据成员和成员方法,将类做成封装体,把类转换成对象进行使用,可以调用该对象的数据成员和对象方法。这个办法是比较常用的。
继承
- 继承是用来实现代码复用和设计复用的机制,是面向对象程序设计的重要特性之一。设计一个新类时,如果可以继承一个已有的设计良好的类然后进行二次开发,无疑会大幅度减少开发工作量。
- 在继承关系中,已有的、设计好的类称为父类或基类,新设计的类称为子类或派生类。派生类可以继承父类的成员。如果需要在派生类中调用基类的方法,可以使用内置函数
super()或者通过“基类名.方法名()”的方式来实现这一目的。 - Python支持多继承,如果父类中有相同的方法名,而在子类中使用时没有指定父类名,则Python解释器将从左向右按顺序进行搜索。
例子
父级
class Person(object):
def_init_(self,name=",age=20,sex=man'):
selfsetName(name)
self.setAge(age)
self.setSex(sex)
def setName(selfname):
assert isinstance(name, str), 'name must be string. self.name=name
def setAge(self,age):
assert isinstance(age,int),'age must be integer.
def setSex(self, sex):
assert sex in (man','woman'), 'sex must be"man" or "woman""
self.__sex= sex
def show(self):
print('Name:', self._name)
print('Age:', self._age)
print('Sex:', self._sex)
子级
class Teacher(Person):
def_init_(self,name=",age=30,sex=man,department=Computer'):
super(Teacher,self). init (nameagesex)
selfsetDepartment(department)
def setDepartment(self,department):
assert isinstance(department,str),'department must be a string. self.
department=department
def show(self):
super(Teacher,self).show()
print(Department:,self. department)
其中
super(Teacher,self). init (nameagesex)
此处可以用
Person.init__(self,name, age, sex)
替换。
父级存在的对象子级也可以重复命名,相当于把从父级继承过来的对象进行覆盖,这一行为是被允许的。