如何在python的构造函数中初始化后保留全局变量的值?

时间:2017-05-02 10:50:31

标签: python django oop

我在使用Django创建表单时遇到了这个问题。

class DetailForm(forms.Form):
    row_id = 2

    def __init__(self, *args, **kwargs):
        global row_id
        row_id = kwargs.pop('r_id')
        super(DetailForm, self).__init__(*args, **kwargs)

    row=Prewash.objects.get(id=row_id)
    id = forms.CharField(label='ID',initial=row_id, widget=forms.TextInput(attrs={'readonly':'readonly'}))

init ()中,正在更新全局变量row_id。但是当我尝试从db中检索值时,它不会反映在最后一行中。

我需要一种方法来保留我想在构造函数中设置的变量的值(不使用实例或方法)。

2 个答案:

答案 0 :(得分:0)

在python类中,我们使用对象属性或静态属性。 如果你想要访问对象属性,你必须使用

self.<attribtute_name>

如果您想要访问静态属性,我们使用

<<ClassName>>.<<attribute_name>>

请参阅此链接Static class variables in Python

答案 1 :(得分:0)

如果您想根据表单的上下文更改字段属性,可以通过访问和更新class DetailForm(forms.Form): id = forms.CharField(label='ID', widget=forms.TextInput(attrs={'readonly':'readonly'})) def __init__(self, *args, **kwargs): row_id = kwargs.pop('r_id', 2) super(DetailForm, self).__init__(*args, **kwargs) self.fields['id'].initial = row_id 函数中的特定字段来实现。

这样的事情应该有效:

{{1}}