封装是指把数据和函数封装成为一个对象,也就是创建一个名字空间,通过这个名字空间引用这些数据和函数,这就是定义对象、声明对象、使用对象。类的定义就是定义对象拥有的属性和方法,类的实例化就是声明这个类的一个对象,访问对象的属性和方法就是使用这个对象。
# 定义对象, 定义类class Person():def __init__(self, name, age):# 定义对象的属性self.name = nameself.age = age# 定义对象方法def speak(self, word):print(f'{self.name}说:’, word)# 声明对象,类的实例化p = Person(‘张三’, 18)# 使用对象,调用对象方法p.speak(‘hello, world!’)
继承是指定义对象时复用已有对象的代码,此时已有对象称为基础类,新对象称为扩展类。通过继承机制,新对象不但复用了其它对象的属性和方法,并且在这个基础上重新定义该对象专有的属性和方法。
class Teacher(Person):def __init__(self, name, age):super().__init__(name, age)# 定义新属性self.teaching = ”# 定义新方法def teach(self, teaching):self.teaching = teachingself.speak(self.teaching)# 覆盖已有方法def speak(self, word):print(f’老师{self.name}教授:{self.teaching}’)class Student(Person):def __init__(self, name, age):super().__init__(name, age)self.knowledge = ”def learn(self, teacher):self.knowledge = teacher.teachingself.speak(self.knowledge)def speak(self, word):print(f’学生{self.name}学习:{self.knowledge}’)t = Teacher(‘张三’, 32)s = Student(‘李四’, 10)t.teach(‘知识就是力量!’)s.learn(t)
多态是指对象继承时,重定义基础对象的方法,此时,不同扩展对象调用相同方法时呈现不同的结果,因此叫作多态性。如上述代码中老师和学生对象都调用speak方法但输出却不同。