如何在python中动态命名我的变量类

时间:2011-08-08 21:15:57

标签: python

  

可能重复:
  Python: Why can't I modify the current scope within a function using locals()?
  How do you programmatically set an attribute in Python?

我知道动态地使用python中的变量:

var = "my_var"
locals()[var] = "coucou"
print my_var
>>coucou

但我不知道如何在变量类上创建它。 当我尝试:

class Controller(object):
    def __init__(self):
        var = 'ma_variable_dynamique'
        locals()[var] = 'toto'
        print ma_variable_dynamique

引发了“名称错误:全局名称'ma_variable_dynamique'未定义”。

php中的示例:

class Users extends Controller{
    public $models = array(‘User’);

    function login(){
        $this->User->validate();
    }

    //Call in contructor
    function loadModel(){
        foreach($this->models as $m){
            $_class = $m.’Model’;s
            $this->{$m} = new $_class();
        }
    }
}

THX

3 个答案:

答案 0 :(得分:2)

用户setattr

class Controller(object):
    def __init__(self):
        var = 'ma_variable_dynamique'
        setattr(self, var, 'toto')

答案 1 :(得分:2)

这只能解释为什么你所做的不起作用(不是怎么做)。

来自http://docs.python.org/library/functions.html#locals的文档(强调我的):

  

更新并返回表示当前本地符号的字典   表。调用时,locals()返回自由变量   功能块,但不在类块中。

     

注意不应修改此词典的内容;变化   可能不会影响使用的本地和自由变量的值   解释

答案 2 :(得分:0)

使用setattr

class Controller(object):
    def __init__(self):
        setattr(self, "ma_variable_dynamique", "toto")