Python:为什么不能在方法中使用self.variable作为可选参数?

时间:2019-06-11 03:09:06

标签: python class self

我创建了一个类,希望将self.variable传递给方法中的可选参数。原因是因为我想将信息存储在用另一种方法制成的Self.variable中,但是,如果我使用该方法,我想必须选择使用自己的手动信息覆盖self.variable。

遗憾的是,这是不允许的,因此我想知道为什么不这样做!? 另外,我想知道是否有人知道用Python方式实现相同目标的方法?

这是我尝试过的一个例子:

# example:

class Example(Object)

    def __init__(self):
        self.variable = []

    def fill_variable(self):
        self.variable = [random.randint(1,10)] * 10

    def use_variable(self, random_numbers = self.variable)
        print(random)

test.Example()
test.fill_variable()
test.use_variable()

# or
test.use_variable(random_numbers=[1,2,3,4,5,6,7,8,9,10])

我期望test.use_variable()将打印10个随机数 而那个test.use_variable(random_numbers=[1,2,3,4,5,6,7,8,9,10]) print(1,2,3,4,5,6,7,8,9,10)

感谢您的帮助和帮助!

2 个答案:

答案 0 :(得分:1)

不幸的是,这是不可能的,相反,您可以使用if语句检查它是否是相同的值(None),如果是,则将其分配给self.variable

def use_variable(self, random_numbers = None):
    if random_numbers == None:
        random_numbers = self.variable
    print(random_numbers)

答案 1 :(得分:1)

包含方法的def行的类级别的代码行在导入时执行一次。目前,该类的实例可能为self,并且该类尚未完成。

另一点是,参数名称self仅在该方法内部 存在。