正确代码
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, initerprint(number1 + number2) File "test.py", line 32, in __add__ return self.number + other TypeError: unsupported operand type(s) for +: 'int' and 'Data'
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 3radd
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]



