如何在Python中从超类创建子类?
在本文中,我们将讨论如何在Python中从超类创建子类。在进一步处理之前,让我们理解什么是类和超类。
类 是一个用户定义的模板或原型,用于创建对象。类提供了一种打包功能和数据的方法。创建对象类型的新实例的能力得以实现,因为新类的产生。
每个类的实例都可能有与之连接的属性,以保留其状态。类实例还可以包含更改其状态的方法,这些方法由其类定义。
更多Python相关文章,请阅读:Python 教程
语法
用于类的语法为 –
class NameOfClass:
# 语句
例子
class关键字表示创建一个类,后跟类名(即下面例子中的’Sports’) –
class Sports:
pass
print ('Class created successfully')
输出
上述代码的输出如下 –
Class created successfully
在Python的子类中创建超类对象
super()函数提供了访问父类或兄弟类的方法和属性。除了允许多重继承外,super()函数还返回表示父类的对象。
语法
语法如下 –
Super()
它返回一个代表父类的代理对象,没有参数。
例子
super()函数的示例如下 –
class Mammal(object):
def __init__(self, Mammal_type):
print('Animal Type:', Mammal_type)
class Reptile(Mammal):
def __init__(self):
#调用超类
super().__init__('Reptile')
print('爬行动物是冷血的)
snake=Reptile()
输出
上述代码的输出如下 –
Animal Type: Reptile
爬行动物是冷血的
例子
以下示例说明了在python中使用super()函数的用法 –
class Laptop(object):
def __init__(self, breadth, height):
self.breadth = breadth
self.height = height
self.area = 50
class Games(Laptop):
def __init__(self, breadth, height):
super(Games, self).__init__(breadth, height)
输出
以下是上述代码的输出,我们可以访问Laptop.area –
# 选取 5 和 9 作为宽度和高度
>>> x=Games(5,9)
>>> x.area
50
示例
使用 super() 进行单一继承
以 Cat_Family 为例。Cat_Family 包括 Feline、Tigers 和 Lynx。它们还有共同的特征,如:
- 他们是趾行动物。
- 他们的前足有五个脚趾,后足有四个脚趾。
- 他们无法察觉甜味。
因此,Feline、Tiger 和 Lynx 都是 Cat_Family 类的子类。因为从单个父类继承了众多的子类,这是单一继承的示例。
class Cat_Family:
# 初始化构造函数
def __init__(self):
self.digitigrade = True
self.ToesOnForefeet = 5
self.ToesOnHindfeet = 4
self.LackSweetTasteReceptor = True
def isDigitigrade(self):
if self.digitigrade:
print("它是趾行动物。")
def LackOfSweetnessTste(self):
if self.LackSweetTasteReceptor:
print("它不能察觉甜味。")
class Feline(Cat_Family):
def __init__(self):
super().__init__()
def isMammal(self):
super().isMammal()
class Tigers(Cat_Family):
def __init__(self):
super().__init__()
def hasToesOnForefeetAndHindfeet(self):
if self.ToesOnForefeet and self.ToesOnHindfeet == 4:
print("前后脚都有脚趾。")
# 主代码
Pet = Feline()
Pet.isDigitigrade()
Street = Tigers()
Street.hasToesOnForefeetAndHindfeet()
输出
以下是以上代码的输出 −
它是趾行动物。
前后脚都有脚趾。
Python super() 方法的应用和限制
Python 中的 Super() 方法具有两个主要应用 −
- 允许我们避免明确地使用基类名称。
- 处理多重继承
super 函数有以下三个限制 −
- super 函数引用的类及其方法
- 调用的函数参数应与 super 函数的参数匹配。
- 在使用后,必须在每个方法实例中包括 super()。