_iter魔术方法,__ge__()等

29 篇文章 0 订阅
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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值