Python 如何从超类创建一个子类
在本文中,我们将讨论如何在Python中从超类创建子类。在继续之前,让我们了解什么是类和超类。
一个 类 是一个用户定义的模板或原型,用于创建对象。类提供了一种将功能和数据捆绑在一起的方法。通过创建一个新的类,才有可能创建该对象类型的新实例。
类的每个实例可能具有与其相关联的属性,以维持其状态。类实例还可以包含由其类定义的用于更改其状态的方法。
语法
用于类的语法是 –
class NameOfClass:
# Statement
示例
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):
# calling the superclass
super().__init__('Reptile')
print('Reptiles are cold blooded')
snake = Reptile()
输出
上述代码的输出如下所示 –
Animal Type: Reptile
Reptiles are cold blooded
示例
以下示例将解释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 –
# Picking up 5 and 9 for breadth and height respectively
>>> x=Games(5,9)
>>> x.area
50
示例
使用super()完成单继承
以猫科动物为例。猫科动物包括猫科、老虎和猞猁。它们之间也有一些共同特征,如:
- 它们是趾行动物。
- 它们前脚有五个脚趾,后脚有四个脚趾。
- 它们无法感知甜味。
因此,猫科、老虎和猞猁都是猫科动物类的子类。由于从一个单一父类继承了多个子类,这是单继承的一个示例。
class Cat_Family:
# Initializing the constructor
def __init__(self):
self.digitigrade = True
self.ToesOnForefeet = 5
self.ToesOnHindfeet = 4
self.LackSweetTasteReceptor = True
def isDigitigrade(self):
if self.digitigrade:
print("It is digitigrade.")
def LackOfSweetnessTste(self):
if self.LackSweetTasteReceptor:
print("It cannot detect sweetness.")
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("Has toes on forefeet and hind feet")
# Driver code
Pet = Feline()
Pet.isDigitigrade()
Street = Tigers()
Street.hasToesOnForefeetAndHindfeet()
输出
以下是上述代码的输出−
It is digitigrade.
Has toes on forefeet and hind feet
Python super()方法的应用和限制
Python中的super()方法有两个主要应用:
- 允许我们避免显式地使用基类名称。
- 处理多重继承。
super函数有以下三个限制:
- super函数引用的类及其方法。
- 调用函数的参数应与super函数的参数相匹配。
- 在每个方法实例中都必须包含super()。