簡體   English   中英

在python的構造函數中初始化全局變量后,如何保留它的值?

[英]How to retain the value of a global variable after initialising it in constructor in python?

我在使用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正在更新。 但是當我嘗試從數據庫中檢索值時,它沒有反映在最后一行。

我需要一種方法來保留我試圖在構造函數中設置的變量的值(不使用實例或方法)。

在python類中,我們使用對象屬性或靜態屬性。 如果要訪問對象屬性,則必須使用

self.<attribtute_name>

如果您要訪問靜態屬性,請使用

<<ClassName>>.<<attribute_name>>

查看此鏈接Python中的靜態類變量

如果要基於表單的上下文更改字段屬性,可以通過訪問並更新__init__函數中的特定字段來實現。

這樣的事情應該起作用:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM