在__init__中分配__str__方法无法在Python中正常工作

时间:2018-11-03 18:50:29

标签: python python-3.x class object types

我试图有条件地创建

__str__
推荐使用herehere的python类中的

方法,我知道不推荐这样做。但据我了解,可以这样做:

from types import MethodType

def str_fcn(self):
    return self.a

class A(object):
    def __init__(self, a=None):
        if a is not None:
            self.a = a
            self.__str__ = MethodType(str_fcn, self)
            self.test = MethodType(str_fcn, self)

a = A(a="name")

print(a)
print(a.test())

似乎不适用于魔术方法。最后的最后一次打印调用按我期望的那样打印“名称”,但是第一个使用默认的字符串表示形式。为什么?

0 个答案:

没有答案