【问题标题】:why don't closures work within python classes? [duplicate]为什么闭包在 python 类中不起作用? [复制]
【发布时间】:2021-11-03 01:27:34
【问题描述】:
class Example:
    my_list = [1, 2, 3]
    def __init__(self):
        self.my_list = my_list


example = Example()

print(example.my_list)

运行上面的代码会返回这个NameError: name 'my_list' is not defined

class Example:
    my_list = [1, 2, 3]
    def __init__(self):
        global my_list
        self.my_list = my_list


example = Example()

使用global 似乎也不起作用。会发生什么?为什么你不能使用globalinstantiate 一个属性?

【问题讨论】:

标签: python class scope closures class-attributes


【解决方案1】:

你不需要设置self.my_list = my_list,因为my_list已经是Example的一个属性:

class Example:
    my_list = [1, 2, 3]
    def __init__(self):
        pass


example = Example()

print(example.my_list)

您也可以在__init__ 方法中定义my_list

class Example:
    def __init__(self):
        self.my_list = [1, 2, 3]


example = Example()

print(example.my_list)

【讨论】:

    猜你喜欢
    • 2021-06-03
    • 1970-01-01
    • 2013-10-31
    • 2013-02-03
    • 2022-12-11
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    • 1970-01-01
    相关资源
    最近更新 更多