python经典类、新式类写法、多继承
目录
一、经典类
二、新式类写法
三、多继承
一、经典类
在Python 2中,如果一个类没有显式地继承自任何类,那么它被认为是一个经典类(classic class)。经典类在Python 2中是默认的类类型,但在Python 3中已经被废弃,因为新式类提供了更多功能和特性。
下面是一个简单的经典类的定义和写法示例:
class ClassicClass:
def __init__(self, attribute):
self.attribute = attribute
def method(self):
print("This is a method of the ClassicClass")
# 创建类的实例
obj = ClassicClass("example")
# 调用方法
obj.method()
在上面的示例中,ClassicClass
是一个经典类,它没有显式地继承自任何类。类中包含了一个构造函数__init__
和一个方法method
。可以通过实例化类并调用方法来使用经典类的功能。
需要注意的是,经典类的一个特点是不支持多重继承中的超类方法调用顺序问题。
二、新式类写法
在Python中,有两种类型的类:经典类(classic class)和新式类(new-style class)。
新式类是指继承自object
类(或object
的子类)的类,它们在Python 2.2版本后被引入。新式类提供了更多的功能和特性,因此推荐在Python中使用新式类。
下面是一个简单的新式类的定义和写法示例:
class NewStyleClass(object):
def __init__(self, attribute):
self.attribute = attribute
def method(self):
print("This is a method of the NewStyleClass")
# 创建类的实例
obj = NewStyleClass("example")
# 调用方法
obj.method()
在上面的示例中,NewStyleClass
是一个新式类,它继承自object
类。类中包含了一个构造函数__init__
和一个方法method
。可以通过实例化类并调用方法来使用新式类的功能。
需要注意的是,在Python 3中,所有的类都默认是新式类,因此不需要显式地继承自object
类。
三、多继承
在Python中,一个类可以继承自多个父类,这称为多继承。通过多继承,子类可以从多个父类中继承属性和方法,从而实现更灵活的代码复用和组合。
下面是一个简单的多继承示例:
class BaseClass1:
def method1(self):
print("Method from BaseClass1")
class BaseClass2:
def method2(self):
print("Method from BaseClass2")
class DerivedClass(BaseClass1, BaseClass2):
def method(self):
print("Method from DerivedClass")
# 创建类的实例
obj = DerivedClass()
# 调用继承的方法
obj.method1()
obj.method2()
obj.method()
在上面的示例中,DerivedClass
是一个子类,它同时继承自BaseClass1
和BaseClass2
这两个父类。子类DerivedClass
可以调用BaseClass1
和BaseClass2
中定义的方法method1()
和method2()
,同时也可以调用自身定义的方法method()
。
需要注意的是,多继承可能导致代码结构变得复杂,同时也增加了类与类之间的依赖关系。在使用多继承时,需要谨慎设计类之间的关系,以避免出现混乱的调用顺序或冲突。通常建议尽量避免过度使用多继承,除非很清楚地知道如何正确地使用它来达到代码复用和组合的目的。