资讯专栏INFORMATION COLUMN

python __repr__ __str__

Flands / 1684人阅读

摘要:实现一个简单二维向量类内置函数把一个对象用字符串的形式表达出来以便辨认这就是字符串表示形式就是通过这个特殊方法来得到一个对象的字符串表示形式的如果没有实现会得到与的区别前者方便我们调试和记录日志后者给终端用户看如果要二选一是更好的选择因为

实现一个简单二维向量类
#!/usr/bin/env python
# coding=utf-8

from math import hypot


class Vector:

    def __init__(self, x=0, y=0):
        self.x = x
        self.y = y
    def __repr__(self):
        """
        内置函数repr, 把一个对象用字符串的形式表达出来以便辨认,这就是"字符串表示形式".
        repr就是通过__repr__这个特殊方法来得到一个对象的字符串表示形式的.
        如果没有实现__repr__,会得到

        __repr__ 与 __str__的区别, 前者方便我们调试和记录日志, 后者给终端用户看.

        如果要二选一, __repr__是更好的选择, 因为如果一个对象没有__str__函数,
        Python在需要调用是会用__repr__作为替代.
        """
        return "Vector(%r, %r)" % (self.x, self.y)
    def __abs__(self):
        return hypot(self.x, self.y)

    def __bool__(self):
        return bool(abs(self))

    def __add__(self, other):
        x = self.x + other.x
        y = self.y + other.y
        return Vector(x, y)

    def __mul__(self, scalar):
        return Vector(self.x * scalar, self.y * scalar)
v1 = Vector(1, 4)
v2 = Vector(2, 8)
print(v1 + v2)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42261.html

相关文章

  • [译] 与 Python 无缝集成——基本特殊方法 1

    摘要:这些基本的特殊方法在类中定义中几乎总是需要的。和方法对于一个对象,有两种字符串表示方法。这些都和内置函数以及方法紧密结合。带有说明符的合理响应是返回。 注:原书作者 Steven F. Lott,原书名为 Mastering Object-oriented Python 有许多特殊方法允许类与Python紧密结合,标准库参考将其称之为基本,基础或本质可能是更好的术语。这些特殊...

    yzd 评论0 收藏0
  • 流畅的python读书笔记-第一章Python 数据模型

    摘要:第一章数据类型隐式方法利用快速生成类方法方法通过下标找元素自动支持切片操作可迭代方法与如果是一个自定义类的对象,那么会自己去调用其中由你实现的方法。若返回,则会返回否则返回。一个对象没有函数,解释器会用作为替代。 第一章 python数据类型 1 隐式方法 利用collections.namedtuple 快速生成类 import collections Card = collec...

    tomener 评论0 收藏0
  • 流畅的python读书笔记-第一章Python 数据模型

    摘要:第一章数据类型隐式方法利用快速生成字典方法方法通过下标找元素自动支持切片操作可迭代方法与如果是一个自定义类的对象,那么会自己去调用其中由你实现的方法。若返回,则会返回否则返回。一个对象没有函数,解释器会用作为替代。 第一章 python数据类型 1 隐式方法 利用collections.namedtuple 快速生成字典 import collections Card = coll...

    FullStackDeveloper 评论0 收藏0
  • python--面向对象进阶

    摘要:它首先被程序语言的设计领域所采用并在和面向对象方面取得了成绩。面向对象中的反射通过字符串的形式操作对象相关的属性。注构造方法的执行是由创建对象触发的,即对象类名而对于方法的执行是由对象后加括号触发的,即对象或者类执行执行逻辑题 isinstance和issubclass 1.isinstance(obj,cls)检查是否obj是否是类 cls 的对象 #!/usr/bin/env py...

    Profeel 评论0 收藏0
  • Python的无缝集成----基本特殊方法.(Mastering Objecting-orient

    摘要:第二章与的无缝集成基本特殊方法笔记中有有一些特殊的方法它们允许我们的类和更好的集成和方法通常方法表示的对象对用户更加友好这个方法是有对象的方法实现的什么时候重写跟非集合对象一个不包括其他集合对象的简单对象这类对象格式通常不会特别复 第二章 与Python的无缝集成----基本特殊方法.(Mastering Objecting-oriented Python 笔记) python中有有一...

    iamyoung001 评论0 收藏0

发表评论

0条评论

Flands

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<