可能重复:
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
答案 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")