前面我们介绍了类的基本内容,下面我们介绍一下类封装、继承、多态
1、 类的封装
封装含义:将数据与具体操作的实现代码放在某个类的内部,类内部隐藏实现细节,类外只能通过接口使用该对象,而不能通过任何形式修改对象内部实现。
具体实现:
- 如果想隐藏某个属性,将属性定义为私有变量
- 如果想隐藏某个方法,将方法定义为私有方法
具体定义方式可参考类的基本内容里面“私有变量和私有方法”
例子:将人进行抽象,定义Person类,将age年龄定义为私有变量,并且将用于判断一个人是否是成年人的方式定义为函数,即实现 self.__age 这个属性进行封装,外界也可以通过is_adult()
函数了解是否成年
class Person:
def __init__(self, name, age):
self.name = name
self.__age = age
def is_adult(self):
if self.__age >= 18:
print"%s is adult" % self.name
else:
print"%s is not adult" % self.name
if __name__ == '__main__':
person = Person(name="小红", age=27)
person.is_adult()
2、 类的继承
类的继承类似于人的父子关系之间的继承,孩子在某方面会继承父母的特征,但是在某些方面就有自己的特征。类的继承也类似,子类继承父类,可以复用父类中的变量和方法,又可以在在自己的类中定义自己特有的逻辑,关于细节有以下几点说明
- 创建子类时,父类必须包含在当前文件中,且位于子类前面
- 定义子类时,需要在类名字后面的括号中注明父类
- super()函数,将父类和子类关联起来。比如下面例子中
Student
子类中的__init__()
方法 - 可以给子类定义自己特有属性和方法,比如下面例子中
weight
属性
(1)单继承
子类语法结构如下:
class 子类(父类):
实例
class People:
def __init__(self, name, age):
self.name = name
self.age = age
def speak(self):
print("%s说: 我%s岁" % (self.name, self