有没有办法在Python中修改类方法中的类?

pup*_*eno 0 python

我想在Python中使用setattr做类方法中的类,但是类不存在所以我基本上得到:

NameError: global name 'ClassName' is not defined
Run Code Online (Sandbox Code Playgroud)

有没有办法让类方法修改类?像这样的东西但实际上有效:

class ClassName(object):
    def HocusPocus(name):
        setattr(ClassName, name, name)

    HocusPocus("blah")
    HocusPocus("bleh")
Run Code Online (Sandbox Code Playgroud)

bal*_*pha 5

类方法获取作为第一个参数传递的类:

class Bla(object):
    @classmethod
    def cm(cls,value):
        cls.storedValue = value

Bla.cm("Hello")

print Bla.storedValue # prints "Hello"
Run Code Online (Sandbox Code Playgroud)

编辑:我想我现在明白你的问题.如果我弄错了,你想要做的就是:

class Bla(object):
    storedValue = "Hello again"

print Bla.storedValue # prints "Hello again"
Run Code Online (Sandbox Code Playgroud)

Python中的类创建(几乎)仅仅意味着:

  1. 创建一个新的命名空间
  2. 使用此命名空间运行在类主体中找到的代码
  3. 将名称空间中剩下的所有内容作为类属性放入类中.

由于storedValue 在步骤2后的命名空间,它变成一个类属性在步骤3中.