Python 方法重写

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)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程