在Python中调用超类构造函数
类就像为一个对象创建一个蓝图。如果我们想建造一座建筑物,那么我们必须有蓝图,比如有多少房间,它的尺寸等等,所以这里实际的建筑物是一个对象,而建筑物的蓝图是一个类。
- 类是用户定义的数据类型,它具有数据成员和成员函数。
- 数据成员是数据变量,成员函数是用于操作这些变量的函数,这些数据成员和成员函数一起定义了类中对象的属性和行为。
在Python中使用关键字class
后跟类名来定义一个类。
在Python中声明对象:定义类时,只定义对象的规范;没有分配内存或存储空间。要使用类中定义的数据和访问功能,我们需要创建对象。
句法 :
object = ClassName()
访问数据成员和成员函数:它们可以通过点(“.”)运算符及其各自类的对象进行访问。例如,如果对象是汽车并且我们想要访问名为 drive 的函数,那么我们将不得不编写car.drive()
。
遗产
继承允许我们定义一个从另一个类继承所有方法和属性的类。被继承的类称为基类或父类。继承另一个类的类称为子类或派生类。
例子 :
在这里,我们可以同时看到 person 和 teacher 类,因为我们继承了 teacher 中的 person 类,所以我们有许多共同的特征,比如每个人都有名字、性别、canTalk(在大多数情况下)、canWalk(在大多数情况下)等等,所以在教师类中,我们不需要再次实现那个东西,因为它是由教师类继承的,所以教师必须具备的任何特性,所以我们可以添加更多特性,比如 canTeach() 和教师编号和许多其他。
所以基本思想是,如果任何类继承了其他类,那么它必须具有父类的特性(如果要使用,你可以使用它),我们可以在它们上添加更多特性。
构造函数
构造函数通常用于实例化对象。构造函数的任务是在创建类的对象时对类的数据成员进行初始化(赋值)。在Python中, __init__()
方法称为构造函数,并且总是在创建对象时调用。
句法 :
def __init__(self):
# body of the constructor
极好的
Python有 super函数,它允许我们访问超类的临时对象。
使用超类:
- 我们不需要显式使用基类名称。
- 有助于处理多重继承。
具有单一继承的超级:
例子 :
# this is the class which will become
# the super class of "Subclass" class
class Class():
def __init__(self, x):
print(x)
# this is the subclass of class "Class"
class SubClass(Class):
def __init__(self, x):
# this is how we call super
# class's constructor
super().__init__(x)
# driver code
x = [1, 2, 3, 4, 5]
a = SubClass(x)
输出 :
[1, 2, 3, 4, 5]
具有多重继承的超级:
示例:使用 super函数在Python中实现以下继承结构:
# defining class A
class A:
def __init__(self, txt):
print(txt, 'I am in A Class')
# B class inheriting A
class B(A):
def __init__(self, txt):
print(txt, 'I am in B class')
super().__init__(txt)
# C class inheriting B
class C(B):
def __init__(self, txt):
print(txt, 'I am in C class')
super().__init__(txt)
# D class inheriting B
class D(B):
def __init__(self, txt):
print(txt, 'I am in D class')
super().__init__(txt)
# E class inheriting both D and C
class E(D, C):
def __init__(self):
print( 'I am in E class')
super().__init__('hello ')
# driver code
d = E()
print('')
h = C('hi')
输出 :
I am in E class
hello I am in D class
hello I am in C class
hello I am in B class
hello I am in A Class
hi I am in C class
hi I am in B class
hi I am in A Class