【Rollo的Python之路】Python 面向对象 (六) 特殊成员
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【Rollo的Python之路】Python 面向对象 (六) 特殊成员,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1814字,纯文字阅读大概需要3分钟。
内容图文
Python 面向对象 :特殊成员
1.0.1 __call__ :__call__()的本质是将一个类变成一个函数(使这个类的实例可以像函数一样调用)
直接用obj()调用:
class Roo: def __init__(self): print('init') def __call__(self, *args, **kwargs): print('call') obj = Roo() obj() Roo()()
1.0.2 __str__ :主要用来打印,str (obj),执行obj的__str__方法,并把返回值给obj
class Roo: def __init__(self,name,age): self.name = name self.age = age def __str__(self): return '%s---%s' %(self.name,self.age) obj = Roo('rollo',25) print(obj)
1.0.3 __int__ :转换数字
class Roo: def __init__(self): pass def __int__(self): return 123 obj = Roo() print(obj,type(obj)) #int 一个对象,自动执行对象的__int__方法,并将返回值给int的对象 r = int(obj) print(r)
1.0.4 __init__ 类()自动执行,这个是类的构造方法
1.0.5 __add__: 两个对象相加,自动执行第一个对象的__add__方法,并将第二个对象当作参数传入,一个一个
class Roo: def __init__(self,name,age): self.name = name self.age = age def __add__(self, other): #self = obj1('rollo',25) #other = obj2('beyond',29) return self.age + other.age obj1 = Roo('rollo',25) obj2 = Roo('beyond',29) ret = obj1 + obj2 print(ret,type(ret))
class Roo: def __init__(self,name,age): self.name = name self.age = age def __add__(self, other): #self = obj1('rollo',25) #other = obj2('beyond',29) # return self.age + other.age return Roo('mathew',54) obj1 = Roo('rollo',25) obj2 = Roo('beyond',29) ret = obj1 + obj2 print(ret,type(ret))
1.0.6 和__add__一样一样的。
- __add__: 加运算
- __sub__: 减运算
- __mul__: 乘运算
- __truediv__: 除运算
- __mod__: 求余运算
- __pow__: 乘方
1.0.7 __del__ :析构函数,释放对象时使用
class Roo: def __init__(self,name,age): self.name = name self.age = age def __add__(self, other): #self = obj1('rollo',25) #other = obj2('beyond',29) # return self.age + other.age return Roo('mathew',54) def __del__(self):#对象被销毁的时候,自动执行的方法 pass
1.0.8 __dict__ :将对象中封装的所有内容通过字典的形式返回
内容总结
以上是互联网集市为您收集整理的【Rollo的Python之路】Python 面向对象 (六) 特殊成员全部内容,希望文章能够帮你解决【Rollo的Python之路】Python 面向对象 (六) 特殊成员所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。