初始化类时Python的行为

时间:2019-06-16 17:16:11

标签: python-3.x class static

如果在一种情况下使用诸如ints的常量,而在另一种情况下使用诸如dict comprehension的表达式,我将无法理解Python的类初始化如何工作。

这两种情况都涉及使用先前声明的类(静态)变量。

请参阅描述该问题的代码段:

class Working(object):
  A = 5
  B = A
  # everything is initialized just as expected

class NotWorking(object):
    A = {
      'key': 'value',
    }

    print(f'Print A: {A}')  # {'key': 'value'}

    B = {
        k: A[k] for k in A.keys()
    }
    # Throws "NameError: name 'A' is not defined."

为什么两个类的行为不同?

1 个答案:

答案 0 :(得分:1)

如果您试图从A克隆B,还有其他方法可以做到。对于A中的多个键,B的声明实际上没有任何意义。

class NowWorking
    A = { 'key': 'value',}
    B = {k:v for k,v in A.items()}

实例变量应使用__init__方法声明。这里有一些资源供您查看。

Classes and Objects - LearnPython

Hackerearth Notes