最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Python运算符重载用法实例分析

来源:动视网 责编:小采 时间:2020-11-27 14:41:06
文档

Python运算符重载用法实例分析

Python运算符重载用法实例分析:本文实例讲述了Python运算符重载用法。分享给大家供大家参考。具体如下: 在Python语言中提供了类似于C++的运算符重在功能: 一下为Python运算符重在调用的方法如下: Method Overloads Call for __init__ 构造函数 X=Class() __del__
推荐度:
导读Python运算符重载用法实例分析:本文实例讲述了Python运算符重载用法。分享给大家供大家参考。具体如下: 在Python语言中提供了类似于C++的运算符重在功能: 一下为Python运算符重在调用的方法如下: Method Overloads Call for __init__ 构造函数 X=Class() __del__


本文实例讲述了Python运算符重载用法。分享给大家供大家参考。具体如下:

在Python语言中提供了类似于C++的运算符重在功能:

一下为Python运算符重在调用的方法如下:

Method Overloads Call for
__init__ 构造函数 X=Class()
__del__ 析构函数 对象销毁
__add__ + X+Y,X+=Y
__or__ | X|Y,X|=Y
__repr__ 打印转换 print X,repr(X)
__str__ 打印转换 print X,str(X)
__call__ 调用函数 X()
__getattr_ 限制 X.undefine
__setattr__ 取值 X.any=value
__getitem__ 索引 X[key],
__len__ 长度 len(X)
__cmp__ 比较 X==Y,X __lt__ 小于 X __eq__ 等于 X=Y
__radd__ Right-Side + +X
__iadd__ += X+=Y
__iter__ 迭代 For In

1. 减法重载

class Number: 
 def __init__(self, start): 
 self.data = start 
 def __sub__(self, other): #minus method 
 return Number(self.data - other) 
number = Number(20) 
y = number – 10 # invoke __sub__ method 
class Number: 
 def __init__(self, start): 
 self.data = start 
 def __sub__(self, other): #minus method 
 return Number(self.data - other) 
number = Number(20) 
y = number – 10 # invoke __sub__ method

2. 迭代重载

class indexer: 
 def __getitem__(self, index): #iter override 
 return index ** 2 
X = indexer() 
X[2] 
for i in range(5): 
 print X[i] 
class indexer: 
 def __getitem__(self, index): #iter override 
 return index ** 2 
X = indexer() 
X[2] 
for i in range(5): 
 print X[i]

3. 索引重载

class stepper: 
 def __getitem__(self, i): 
 return self.data[i] 
X = stepper() 
X.data = 'Spam' 
X[1] #call __getitem__ 
for item in X: #call __getitem__ 
 print item 
class stepper: 
 def __getitem__(self, i): 
 return self.data[i] 
X = stepper() 
X.data = 'Spam' 
X[1] #call __getitem__ 
for item in X: #call __getitem__ 
 print item

4. getAttr/setAttr重载

class empty: 
 def __getattr__(self,attrname): 
 if attrname == 'age': 
 return 40 
 else: 
 raise AttributeError,attrname 
X = empty() 
print X.age #call__getattr__ 
class accesscontrol: 
 def __setattr__(self, attr, value): 
 if attr == 'age': 
 # Self.attrname = value loops! 
 self.__dict__[attr] = value 
 else: 
 print attr 
 raise AttributeError, attr + 'not allowed' 
X = accesscontrol() 
X.age = 40 #call __setattr__ 
X.name = 'wang' #raise exception 
class empty: 
 def __getattr__(self,attrname): 
 if attrname == 'age': 
 return 40 
 else: 
 raise AttributeError,attrname 
X = empty() 
print X.age #call__getattr__ 
class accesscontrol: 
 def __setattr__(self, attr, value): 
 if attr == 'age': 
 # Self.attrname = value loops! 
 self.__dict__[attr] = value 
 else: 
 print attr 
 raise AttributeError, attr + 'not allowed' 
X = accesscontrol() 
X.age = 40 #call __setattr__ 
X.name = 'wang' #raise exception

5. 打印重载

class adder: 
 def __init__(self, value=0): 
 self.data = value 
 def __add__(self, other): 
 self.data += other 
class addrepr(adder): 
 def __repr__(self): 
 return 'addrepr(%s)' % self.data 
x = addrepr(2) #run __init__ 
x + 1 #run __add__ 
print x #run __repr__ 
class adder: 
 def __init__(self, value=0): 
 self.data = value 
 def __add__(self, other): 
 self.data += other 
class addrepr(adder): 
 def __repr__(self): 
 return 'addrepr(%s)' % self.data 
x = addrepr(2) #run __init__ 
x + 1 #run __add__ 
print x #run __repr__

6. Call调用函数重载

class Prod: 
 def __init__(self, value): 
 self.value = value 
 def __call__(self, other): 
 return self.value * other 
p = Prod(2) #call __init__ 
print p(1) #call __call__ 
print p(2) 
class Prod: 
 def __init__(self, value): 
 self.value = value 
 def __call__(self, other): 
 return self.value * other 
p = Prod(2) #call __init__ 
print p(1) #call __call__ 
print p(2)

7. 析构函数重载

class Life: 
 def __init__(self, name='name'): 
 print 'Hello', name 
 self.name = name 
 def __del__(self): 
 print 'Goodby', self.name 
brain = Life('Brain') #call __init__ 
brain = 'loretta' # call __del__

希望本文所述对大家的Python程序设计有所帮助。

文档

Python运算符重载用法实例分析

Python运算符重载用法实例分析:本文实例讲述了Python运算符重载用法。分享给大家供大家参考。具体如下: 在Python语言中提供了类似于C++的运算符重在功能: 一下为Python运算符重在调用的方法如下: Method Overloads Call for __init__ 构造函数 X=Class() __del__
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top