有没有更好的方法来记住Python中以前给定的可选方法参数?

时间:2018-12-05 22:47:17

标签: python class methods arguments

因此,在尝试理解类时,我一直在研究类,并且遇到了让我的方法记住以前给定参数的需求。这是因为我想在不传递新参数的情况下触发方法,而只是使用以前的相同参数。 因为我是从其他地方触发的,所以我认为如果没有传递新的参数,尝试让类记住变量并使用内存会更容易。

我最终得到的基本上是这样的:

class someclass:
    def test(self, x=None):
        if x:
            self.x = "yes " + str(x)
        try:
            print(self.x)
        except AttributeError:
            pass

a = someclass()

a.test()
a.test()
a.test(5)
a.test()
a.test()

因此前两次调用self.x尚未定义,因此它可以通过。在此之后的任何时间,它都会记住仅给出一次的5。

所以我的问题主要是,是否有一种更简单/更好的方式来编写此代码块,而且还有这种不好的做法会在以后给我带来麻烦。

1 个答案:

答案 0 :(得分:0)

您也可以使用类属性来实现。这里,我们使用类属性x首先存储我们的默认值,然后存储先前输入的值:

代码:

class someclass:
    x = None
    def test(self, x=x):
        if x:
            someclass.x = "yes " + str(x)
        if someclass.x:
            print(someclass.x)

a = someclass()

a.test()
a.test()
a.test(5)
a.test()
a.test()