Python Python中的类继承是如何工作的?
在Python中,类继承是一种重要的面向对象编程概念。了解Python的类继承可以帮助您更好地理解Python语言编程。本文将介绍Python中的类继承是如何工作的。我们将会涵盖以下内容:
- 类继承的概念
- 父类和子类
- 单继承和多重继承
- Super函数
阅读更多:Python 教程
类继承的概念
类继承是一种编程方法,它允许程序员定义一个类,并且该类会继承来自超类的属性和方法。子类通常被认为是超类的一个扩展或特化版本。在Python中,我们使用关键字“class”来定义一个类及其属性和方法。
类的继承定义如下:
class SubClass(SuperClass):
# 类定义
在这里,“SubClass”是派生类,“SuperClass”是超类。在这个定义中,派生类“SubClass”将继承超类“SuperClass”的所有属性和方法。
class Employee:
'所有员工的基类'
empCount = 0
def __init__(self, name, salary):
self.name = name
self.salary = salary
Employee.empCount += 1
def displayCount(self):
print("Total Employee %d" % Employee.empCount)
def displayEmployee(self):
print("Name : ", self.name, ", Salary: ", self.salary)
在这里,“Employee”是一个基类,它具有一些属性和方法,例如“empCount”,“init”,“displayCount”和“displayEmployee”。现在,我们将定义一个名为“Manager”的子类,它将从基类中继承属性和方法。
class Manager(Employee):
def __init__(self, name, salary, department):
Employee.__init__(self, name, salary)
self.department = department
def displayManager(self):
print("Name : ", self.name, ", Salary: ", self.salary, ", Department: ", self.department)
在这里,“Manager”是一个子类,它继承了“Employee”类的属性和方法。此外,它还新增了一个名为“department”的属性,用于区分管理人员属于哪个部门。
父类和子类
在Python中,超类也称为父类或基类,而子类也称为派生类。你可以使用“isinstance()”函数来检查对象是否是特定类的实例。
emp = Employee("John", 1000)
man = Manager("Jack", 2000, "IT")
print(isinstance(emp, Employee)) # True
print(isinstance(man, Employee)) # True
print(isinstance(man, Manager)) # True
在上面的代码中,“emp”和“man”都是类的实例。由于“Manager”类是从“Employee”类派生而来的,因此“man”也是“Employee”的一个实例。
单继承和多重继承
在Python中,类可以多重继承,这意味着一个子类可以从多个超类中继承属性和方法。例如:
class SubClass(SuperClass1, SuperClass2, SuperClass3):
# 类定义
在这里,“SubClass”从三个超类中继承。它在子类中的属性和方法也将按照继承的顺序进行访问。如果两个或多个超类有相同的方法,那么第一个被继承的超类中的方法将被调用。
对于面向对象编程来说,多重继承可以使类更加可重用和灵活。然而,在编写代码时要小心,因为多重继承可能会使代码结构变得复杂。
class A:
def say_hello(self):
print("Hello from A")
class B(A):
def say_hello(self):
print("Hello from B")
class C(A):
def say_hello(self):
print("Hello from C")
class D(B, C):
pass
d = D()
d.say_hello()
在上面的代码中,“A”是超类,“B”和“C”是从“A”继承的子类,“D”继承了“B”和“C”。最后,我们创建了一个名为“d”的对象,并调用其“say_hello()”方法。由于“D”类继承了“B”和“C”,因此它在调用“say_hello()”方法时将优先使用“B”类定义的方法。因此,在这个例子中,输出的结果将是“Hello from B”。
Super函数
在Python中,使用“super()”函数可以调用超类的方法。通常,这是在子类中重载超类的方法时使用的。
class FooParent(object):
def __init__(self):
self.parent = 'I\'m the parent.'
print('Parent')
def bar(self, msg):
print("%s from Parent" % msg)
class FooChild(FooParent):
def __init__(self):
super(FooChild, self).__init__()
print('Child')
def bar(self, msg):
super(FooChild, self).bar(msg)
print('Child bar fuction')
print(self.parent)
child = FooChild()
child.bar('HelloWorld')
在上面的代码中,我们定义了两个类:“FooParent”和“FooChild”,我们调用了“super()”函数来获取超类并调用其方法。在“FooParent”的“init”方法中,我们打印出“Parent”并将“parent”属性设置为“I’m the parent.”。在“FooChild”的“init”方法中,我们使用“super()”函数调用了“FooParent”的“init”方法来初始化超类。同时,我们还在“FooChild”的“bar”方法中使用“super()”函数调用了“FooParent”的“bar”方法,以及在该方法中添加了一些其他逻辑。
结论
在Python中,类继承是一种有效的面向对象编程概念。使用类继承,程序员可以定义一个类,从另一个类继承属性和方法,并且可以创建父类和子类之间的层次关系。在Python中,子类继承了超类的属性和方法。你可以使用“isinstance()”函数来检查对象是否是特定类的实例。Python中还支持多重继承。使用“super()”函数可以调用超类的方法。在使用类继承时,需要注意代码的复杂性。