python 的类里是否有一个类似于__str__的数值类型的方法?

发布于 2022-09-06 09:06:13 字数 578 浏览 15 评论 0

请问python 的类里是否有一个类似于__str__的数值类型的方法,可以通过实例名称直接得到一个值,从而直接进行运算,比如在下边的代码中可以直接进行p1 + p2,而不用写p1.age + p2.age?
我知道有一个__add__方法,但是对于2+p1这样的运算会报错,不够理想。
谢谢大家。

class person(object):

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def info(self):
        print "name:%s, age:%d" % (self.name, self.age)

    def __str__(self):
        return "%d" % self.age

    def __value__(self):
        return self.age


p1 = person("jack", 30)
p2 = person("tom", 29)
p1.info()
p2.info()
print p1
print p2

print p1 + p2

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

花开浅夏 2022-09-13 09:06:13

你再实现个 __radd__方法,这个是处理对象在右边的情况。

森林很绿却致人迷途 2022-09-13 09:06:13

不够理想?那就自己写个__add__呗。

class person(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age 

    def info(self):
        print "name:%s, age:%d" % (self.name, self.age)

    def __str__(self):
        return "%d" % (self.age)

    def __value__(self):
        return self.age

    def __add__(self, another):
        return self.age + another.age

p1 = person("jack", 30) 
p2 = person("tom", 29) 

print p1 + p2 #output: 59

推荐阅读:python doc

风吹雨成花 2022-09-13 09:06:13

LZ想让内建方法builtins的int也具备自定义__add__的功能,但是弄了半天,运行时的int对象 add 方法是只读的。 通过 globals['__builtins__'] 替换掉int类,也没有作用。 应该要在C源码层扩展了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文