[英]how to ignore __repr__() for certain method but not others
抱歉,我不太确定如何更准确地放置标题。
我有一个带有__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__
呢?
非常感谢
如果将结果分配给某个变量,则交互式输入不会调用__repr__
。
我会做:
_ = ac.play()
使用匿名_
变量来明确说明它是一次性的,这还保留了将所有函数结果隐式存储在_
的交互式解释器功能。
在速度方面,是的,因为没有调用__repr__
,所以速度更快,并且无论如何都会分配_
。
ac.play();
-分号可防止IPython / Jupyter显示输出,或将其分配给Out
或_
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.