美文网首页
python(Class5)

python(Class5)

作者: OldSix1987 | 来源:发表于2016-09-11 10:40 被阅读17次

让类支持比较操作


类似运算符重载



from functools import total_ordering
from abc import ABCMeta, abstractclassmethod


@total_ordering  # 装饰器,作用类似于c++中的模版:根据小于和等于的方法重载,可以自行推测出小于等于和大于和大于等于的方法定义,大大的简化了代码
class Shape(object):
    @abstractclassmethod  # 抽象基类,子类必须覆盖
    def area(self):
        pass

    def __lt__(self, other):
        if not isinstance(other, Shape):
            raise TypeError('obj is Not Shape')
        return self.area() < other.area()

    def __eq__(self, other):
        if not isinstance(other, Shape):
            raise TypeError('obj is Not Shape')
        return self.area() == other.area()


class Rectangle(Shape):
    def __init__(self, w, h):
        self._w = w
        self._h = h

    def area(self):
        return self._w * self._h


class Circle(Shape):
    def __init__(self, r):
        self._r = r

    def area(self):
        return self._r ** 2 * 3.14


c1 = Circle(3)
r1 = Rectangle(5, 3)
r2 = Rectangle(4, 4)

print(r1 <= r2)
print(r1 > c1)
# print(r1 > 1)

相关文章

  • python(Class5)

    让类支持比较操作 类似运算符重载

  • GeekBand class5

    1.容器分为sequence containers 、associative containers、unorder...

  • 11-2017泰营听录

    2017泰国静修营——道次第28—Class5 (00:5:36 Start) 好,我们开始。我们现在要开始...

  • 2017泰营~class5

    2017泰国静修营——道次第28—Class5 (00:5:36 Start) 好,我们开始。我们现在要开始冥想了...

  • 【泰国静修营Class5精华分享】——冥想、故事、问答

    【泰国静修营Class5精华分享】——冥想、故事、问答 如果我们和朋友一起练习瑜伽是比较容易坚持。因此,你可以说就...

  • 泰国静修营CLASS5

    瑜伽日 瑜伽最重要的之一是骗自己让自己做瑜伽。我不喜欢瑜伽,就发明很多方法让自己去做瑜伽,其中之一是瑜伽日,就是瑜...

  • 13-2017泰营听录

    class5 始于2:36:39 我就问了我的老师,我杀了某个人,我要做多少次的四力量呢?我的老师的回答总是很讨人...

  • 12-2017泰营听录

    class5 然后他就对第四步做了评论,这个就很酷了,因为在前面的这些教授当中,我讲到了第四个力量,如何去平衡这个...

  • 👂🏻#耳朵人#观察与创作Class5👀10.20

    耳朵人第五节课回顾 1马格里特,比利时,超现实主义艺术家。 2超现实主义 : 超现实主义作为一项文学与艺术的运动,...

  • Class5 v-model使用和实现

    v-model一般用于input标签的值绑定和值变化通知 等价 自定义显示v-model组件功能 父组件 子组件...

网友评论

      本文标题:python(Class5)

      本文链接:https://www.haomeiwen.com/subject/lljuettx.html