对不起,我不太清楚如何把标题写得更准确。你知道吗
我有一个带有__repr__()
的类来报告类的一些关键属性。你知道吗
我的大多数方法都返回self,因此我可以使用菊花链方法。e、 g.a.m1().m2()...
class Myclass:
def __init__(self):
self.a = 1
self.b = "hello"
def __repr__(self):
msg = f"Myclass: a = {self.a}, b is {self.b}."
return msg
def plus(self, n):
self.a += n
return self
def concat(self, s):
self.b += s
return self
def play(self):
# play audio here
return self
ac = Myclass()
ac.plus(n=4) # Ok i would like to see __repr__ output
ac.play() # no I dont want to see __repr__
__repr__
在Jupyter中工作得很好,因为它可以通过执行ac
来报告一些关键属性。但是,我有一个play()
方法来播放音频,它也返回self,我绝对不希望打印执行,因为有时我可能需要快速多次调用这个方法。你知道吗
那么有没有一种方法可以在我的所有方法中都使用return self
,而不是在返回时调用__repr__
?你知道吗
非常感谢
从hpaulj's comment
如果将结果赋给某个变量,则交互输入不会调用
__repr__
。你知道吗我会做:
使用一个匿名的
_
变量来明确它是一次性的,这也保留了交互式解释器特性,它隐式地将任何函数结果存储在_
。你知道吗就速度而言,是的,它更快,因为
__repr__
没有被调用,而且_
无论发生什么都会被分配。你知道吗相关问题 更多 >
编程相关推荐