目录
类和对象
类的定义和实例化
Python中的类通过class关键字来定义,实例化类时使用类名后跟一对括号即可,如下所示:
类的属性和方法
类的属性和方法可以通过在类中定义变量和函数来实现。类的属性可以是类变量(被类的所有实例共享)或实例变量(每个实例都有自己的副本),类的方法可以是类方法(被类调用)或实例方法(被实例调用),如下所示:
属性和方法
属性的访问和修改
类的属性可以通过.运算符进行访问和修改,如下所示:
方法的调用
类的方法可以通过.运算符进行调用,调用实例方法时需要先创建实例对象,如下所示:
继承和多态
继承
继承是一种创建新类的方式,新类可以继承父类的属性和方法。Python中的继承通过在子类的定义中将父类的名称作为参数传递来实现。子类可以访问父类的属性和方法,还可以添加新的属性和方法,或覆盖父类的方法。
定义一个基类
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
raise NotImplementedError("Subclass must implement abstract method")
定义一个子类
在这个例子中,Animal是一个基类,它定义了所有动物的通用属性和方法。Dog和Cat是子类,它们继承了Animal的属性和方法,并且实现了各自的speak()方法。
调用父类的方法
在子类中调用父类的方法可以使用super()函数。
在这个例子中,Employee继承了Person的属性name和age,并且添加了salary属性。在Employee的构造函数中,使用super()函数调用父类的构造函数,从而避免了重复代码。
多态
当不同的对象可以使用相同的方法名调用不同的函数实现时,就产生了多态。在 Python 中,多态可以通过继承和实现相同的接口来实现。
下面是 Python 实现多态的示例:
定义一个基类
定义一个子类
使用多态
在上面的示例中,Animal
是基类,Dog
和 Cat
是子类。它们都实现了基类的 make_sound()
方法,并且方法的实现不同。在 animal_sound()
函数中,我们可以传递任何实现了 make_sound()
方法的对象,并且都可以被正确地处理。这就是多态的体现。
需要注意的是,在 Python 中,所有的类型都是动态类型,也就是说,变量的类型是在运行时确定的,而不是在编译时确定的。这也是 Python 中实现多态的重要原因之一。