from collections import Iterable
class Student(object):
def __init__(self,name):
self.name=name
self.score=[100,90,89]
def __iter__(self):
print '判断self.score是否可迭代' ##self.score当然是可以迭代的
print iter(self.score) ##打印self.score迭代类型:为列表迭代对象
for i in self.score: ##遍历self.score
print i
return self.score ##返回值
s=Student('fentiao')
print s.__iter__()
---->>
判断self.score是否可迭代
<listiterator object at 0x7f7e4ed5ae50>
100
90
89
[100, 90, 89]
在测试一下:
from collections import Iterable
class Student(object):
def __init__(self,name,state):
self.name=name
self.state=state
self.score=[100,90,89]
def __iter__(self):
print '判断self.state是否可迭代'
print iter(self.state)
for i in self.state:
print i
return self.state
s=Student('fentiao',1)
print s.state
print s.__iter__()
---->>
1
判断self.state是否可迭代
Traceback (most recent call last):
File "/Python/root/day08.py", line 130, in <module>
print s.__iter__()
File "/Python/root/day08.py", line 123, in __iter__
print iter(self.state)
TypeError: 'int' object is not iterable
####报错init对象不可迭代
Process finished with exit code 1
大于等于*._ge_();大于*._gt_();小于等于*._le_();小于*._lt_()等等
from collections import Iterable
class Student(object):
def __init__(self,name,score):
self.name=name
self.score=score
def __iter__(self):
return iter(self.score)
def __ge__(self, other):
avg1=sum(self.score)/len(self.score)
avg2=sum(other.score)/len(other.score)
return avg1 == avg2
def __gt__(self, other):
avg1 = sum(self.score) / len(self.score)
avg2 = sum(other.score) / len(other.score)
print 's大于s1',
return avg1 > avg2
def __le__(self, other):
pass
def __lt__(self, other):
pass
s=Student('fentiao',[12,34,56])
s1=Student('fendai',[12,34,56,12])
print s.__ge__(s1)
print s.__gt__(s1)
---->>
False
s大于s1 True