python魔方方法

add

正确代码

class Data:
    def __init__(self,number):
        self.number = number
        
    #注意other和self.number顺序不能乱
    def __add__(self,other):
        return other + self.number

if __name__ == '__main__':
    number1 = Data(30)
    number2 = Data(20)
    print(number1 + number2)
[root@master python]# python3 test.py 
50

错误代码

class Data:
    def __init__(self,number):
        self.number = number
           
    def __add__(self,other):
        return self.number + other

if __name__ == '__main__':
    number1 = Data(30)
    number2 = Data(20)
    print(number1 + number2)
[root@master python]# python3 test.py 
Traceback (most recent call last):
  File "test.py", line 43, in <module>
    print(number1 + number2)
  File "test.py", line 32, in __add__
    return self.number + other
TypeError: unsupported operand type(s) for +: 'int' and 'Data'

iter

cat iter.py 
#!/usr/bin/env python
#coding: utf-8
class Data:
    def __init__(self,role_items):
         self.role_items = role_items
    def __iter__(self):
        for i in self.role_items:
            yield i


    def __radd__(self,other):
        return other+list(self)
    
    def test(self):
       return Data([role_items])

role=[1,2,3]
data=Data(role)
print(data)
for i in data:
    print(i)
python3 iter.py 
<__main__.Data object at 0x7f2f09f084e0>
1
2
3

radd

cat iter.py 
#!/usr/bin/env python
#coding: utf-8
class Data:
    def __init__(self,role_items):
         self.role_items = role_items
    def __iter__(self):
        for i in self.role_items:
            yield i


    def __radd__(self,other):
        return other+list(self)
    
    def test(self):
       return Data([role_items])

role=[1,2,3]
data=Data(role)
#print(data)
#for i in data:
#    print(i)
list1=[4,5,6]
print(list1+data)
python3 iter.py 
[4, 5, 6, 1, 2, 3]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时空无限

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值