小朋友学Python(22):重写与重载

在学Python的方法重写和重载之前,可以先复习一下Java的重写与重载:
小朋友学Java(8):重写与重载

#一、方法重写
重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!
如果你的父类方法的功能不能满足你的需求,你可以在子类重写你父类的方法。

###例1

class Parent:        
   def myMethod(self):
      print 'Invoke parent method'
 
class Child(Parent): 
   def myMethod(self):
      print 'Invoke child method'
 
c = Child()        
c.myMethod()        

运行结果:

Invoke child method

下表列出了一些通用的功能,你可以在自己的类重写:

方法描述调用方式
init ( self [,args…] )构造函数,初始化对象obj = className(args)
del( self )析构方法, 删除对象del obj
str( self )用于将值转化为适于人阅读的形式str(obj)
cmp ( self, x )对象比较cmp(obj, x)

#二、运算符重载
Python的方法重载,可参考Java中的方法重载。
下面介绍一下运算符重载。
以加号为例,加号支持两个整数相加,两个浮点数相加,两个字符串相加

###例2

a = 1
b = 2
print a + b

运行结果:

3

###例3

a = “Hello “
b = “World!”
print a + b

运行结果:

Hello World!

现在假如有一个自定义的二维数据类型Num(x, y),咱们可能通过重载“+”运算符的方式实现:Num(x1, y1) + Num(x2, y2) = Num(x1 + x2, y1 + y2)

###例4

class Num:
   def __init__(self, a, b):
      self.a = a
      self.b = b
 
   def __str__(self):
      return 'Num (%d, %d)' % (self.a, self.b)
   
   def __add__(self, other):
      return Num(self.a + other.a, self.b + other.b)
 
n1 = Num(5, 10)
n2 = Num(1, -2)
print n1 + n2

运行结果:

Num(6, 8)

注意 ,这里__add__实现了Num的“+”功能,print方法会调用__str__方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值