我试图有条件地创建
__str__
推荐使用here和here的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())
似乎不适用于魔术方法。最后的最后一次打印调用按我期望的那样打印“名称”,但是第一个使用默认的字符串表示形式。为什么?