如何忽略某些方法而不是其他方法的

2024-04-24 09:08:21 发布

您现在位置:Python中文网/ 问答频道 /正文

对不起,我不太清楚如何把标题写得更准确。你知道吗

我有一个带有__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__?你知道吗

非常感谢


Tags: to方法selfplayreturn属性def报告
2条回答

ac.play(); - the semicolon keeps IPython/Jupyter from displaying the output, or assigning it to Out or _.

hpaulj's comment

如果将结果赋给某个变量,则交互输入不会调用__repr__。你知道吗

我会做:

_ = ac.play()

使用一个匿名的_变量来明确它是一次性的,这也保留了交互式解释器特性,它隐式地将任何函数结果存储在_。你知道吗

就速度而言,是的,它更快,因为__repr__没有被调用,而且_无论发生什么都会被分配。你知道吗

相关问题 更多 >