设为首页 收藏本站
查看: 515|回复: 0

[经验分享] Python类的特性方法

[复制链接]

尚未签到

发表于 2017-4-27 10:28:45 | 显示全部楼层 |阅读模式
  Python 类可以定义的专用方法。专用方法是在特殊情况下或当使用特别语法时由 Python 替你调用的,而不是在代码中直接调用(象普通的方法那样)。

6.5.1    __init__

类似于构造函数。

6.5.2    __del__

类似于析构函数

6.5.3    __repr__

使用repr(obj)的时候,会自动调用__repr__函数,该函数返回和eval()兼容的对象字符串表达式,用于重建对象,如果eval(repr(obj))会得到一个对象的拷贝。

class A:
def __repr__(self):
return 'A()'
x = A()
print repr(x)
b = eval(repr(x)) # 拷贝对象a
print b
   


6.5.4    __str__

返回一个字符串用于描述字符串本身。

6.5.5    __cmp __

比较运算符,0:等于 1:大于 -1:小于

class Dog:
def __cmp__(self, other):
if other > 0 :
return 1
elif other < 0:
return - 1
else:
return 0
dog = Dog()
if dog > -10:print 'ok'
if dog < -10:print 'ok'
if dog == 0:print 'ok'

 
class Zoo:
def __getitem__(self, key):
if key == 'dog':return 'dog'
elif key == 'pig':return  'pig'
elif key == 'wolf':return 'wolf'
else:return 'unknown'
zoo = Zoo()
print zoo['dog']
print zoo['pig']
print zoo['wolf']

   

输出结果:ok    ok




6.5.6    __getitem__

__getitem__ 专用方法很简单。象普通的方法 clear,keys 和 values 一样,它只是重定向到字典,返回字典的值。


输出结果:dog    pig        wolf

6.5.7    __setitem__

__setitem__ 简单地重定向到真正的字典 self.data ,让它来进行工作。
class Zoo:
def __setitem__(self, key, value):
print 'key=%s,value=%s' % (key, value)
zoo = Zoo()
zoo['a'] = 'a'
zoo['b'] = 'b'
zoo['c'] = 'c'
   


输出结果:dog    pig        wolf


key=a,value=a

key=b,value=b

key=c,value=c


6.5.8    __delitem__

class A:
def __delitem__(self, key):
print 'delete item:%s' % key
a = A()
del a['key']

 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-369860-1-1.html 上篇帖子: python和django使用小结 下篇帖子: python网络编程1
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表