Python 方法重写
你总是可以重写父类的方法。重写父类方法的一个原因是你可能想在子类中使用特殊或不同的功能。
示例
class Parent: # define parent class
def myMethod(self):
print ('Calling parent method')
class Child(Parent): # define child class
def myMethod(self):
print ('Calling child method')
c = Child() # instance of child
c.myMethod() # child calls overridden method
执行上面的代码时,它会产生以下 输出 –
Calling child method
为了理解Python中的继承,让我们再举一个例子。我们使用以下Employee类作为父类:
class Employee:
def __init__(self,nm, sal):
self.name=nm
self.salary=sal
def getName(self):
return self.name
def getSalary(self):
return self.salary
接下来,我们定义一个使用Employee作为父类的SalesOfficer类。它继承了父类的实例变量name和salary。此外,子类还有一个多余的实例变量incentive。
我们将使用内置函数super(),它返回父类的引用,并在子类构造函数init()方法中调用父类构造函数。
class SalesOfficer(Employee):
def __init__(self,nm, sal, inc):
super().__init__(nm,sal)
self.incnt=inc
def getSalary(self):
return self.salary+self.incnt
getSalary()方法被重写以将激励添加到工资中。
示例
声明父类和子类的对象,并查看重写的效果。完整的代码如下所示-
class Employee:
def __init__(self,nm, sal):
self.name=nm
self.salary=sal
def getName(self):
return self.name
def getSalary(self):
return self.salary
class SalesOfficer(Employee):
def __init__(self,nm, sal, inc):
super().__init__(nm,sal)
self.incnt=inc
def getSalary(self):
return self.salary+self.incnt
e1=Employee("Rajesh", 9000)
print ("Total salary for {} is Rs {}".format(e1.getName(),e1.getSalary()))
s1=SalesOfficer('Kiran', 10000, 1000)
print ("Total salary for {} is Rs {}".format(s1.getName(),s1.getSalary()))
当您执行这段代码时,它将产生以下输出。
Total salary for Rajesh is Rs 9000
Total salary for Kiran is Rs 11000
基本可重写方法
下表列出了对象类的一些通用功能,该类是所有Python类的父类。您可以在自己的类中重写这些方法 −
序号 | 方法、描述和样例 |
---|---|
1 | __init__ ( self [,args...] ) 构造函数(可选择参数) 样例调用: obj = className(args) |
2 | __del__( self ) 析构函数,删除一个对象 样例调用: del obj |
3 | __repr__( self ) 可计算的字符串表示 样例调用: repr(obj) |
4 | __str__( self ) 可打印的字符串表示 样例调用: str(obj) |