抱歉,我不太确定如何更准确地放置标题。
我有一个带有__repr__()
的班级来报告班级的一些关键属性。
我的大多数方法都返回self,因此我可以使用菊花链方法。例如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__
?
非常感谢
答案 0 :(得分:2)
如果将结果分配给某个变量,则交互式输入不会调用__repr__
。
我愿意:
_ = ac.play()
使用匿名_
变量来表明它是一次性的,这也保留了将所有函数结果隐式存储在_
中的交互式解释器功能。
在速度方面,是的,因为没有调用__repr__
,所以速度更快,并且无论如何都将分配_
。
答案 1 :(得分:1)
ac.play();
-分号可防止IPython / Jupyter显示输出或将其分配给Out
或_
。