博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python运算符重载
阅读量:6243 次
发布时间:2019-06-22

本文共 1534 字,大约阅读时间需要 5 分钟。

运算符重载

在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],
                            For If
__len__        长度            len(X)
__cmp__        比较            X==Y,X<Y
__lt__        小于            X<Y
__eq__        等于            X=Y
__radd__        Right-Side +        +X
__iadd__        +=                X+=Y
__iter__        迭代            For In
__unicode__                   unicode(X)
迭代重载

class indexer:

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

减法重载

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 stepper:

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

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
            self.__dict__[attr] = value
        else:
            print attr
            raise AttributeError, attr + 'not allowed'
X = accesscontrol()
X.age = 40 #call __setattr__
X.name = 'wang' #raise exception

unicode重载

#coding:utf-8

class adder:
    def __unicode__(self):
        return u'hello world'
print unicode(x) #hello world

转载地址:http://mbpia.baihongyu.com/

你可能感兴趣的文章
如何让编码更加的标准
查看>>
阿里云收集服务器性能指标的python脚本
查看>>
Docker源码分析(一):Docker架构
查看>>
Android开发之在子线程中使用Toast
查看>>
(第三天)函数
查看>>
Git 学习笔记--Git下的冲突解决
查看>>
poj 2955 Brackets(区间dp)
查看>>
jQuery选中该复选框来实现/全部取消/未选定/获得的选定值
查看>>
武汉Uber优步司机奖励政策(8月31日~9月6日)
查看>>
javascript小技巧:同步服务器时间、同步倒计时
查看>>
JUnit4.8.2来源分析-2 org.junit.runner.Request
查看>>
你觉得你在创业,但其实你可能只是在做小生意而已 制定正确的计划 创业和经营小企业之间的差异...
查看>>
HDU 4847-Wow! Such Doge!(定位)
查看>>
冒泡排序算法 C++和PHP达到
查看>>
Android 弹出通知Toast的使用
查看>>
jquery $.each遍历json数组方法
查看>>
jquery access方法 有什么用
查看>>
更改IOS于UISearchBar撤消button底、搜索输入文本框背景中的内容和UISearchBar底
查看>>
WPF XAML之bing使用StringFormat(转)
查看>>
Mysql备份工具比较
查看>>