[英]How do I declare an attribute in Python without a value?
在 C# 中,我會去:
string UserName;
string Password;
但是現在,在 Python 中:
class User:
UserName
Password
我收到未定義UserName
的錯誤。 我可以不聲明沒有變量的變量嗎?
在 Python 和許多其他語言中,有一個值表示“沒有值”。 在 Python 中,該值為None
。 所以你可以做這樣的事情:
class User:
username = None
password = None
那些聽起來確實像實例變量,而不是類變量,所以可以這樣做:
class User(object):
def __init__(self):
self.username = None
self.password = None
請注意 Python 如何不時隱式分配None
值:
def f():
pass
g = f() # g now has the value of None
首先,你應該像這樣重寫:
class User(object):
def __init__(self, username, password):
self.username = username
self.password = password
這樣, username 和 password 是實例變量而不是類變量(在您的示例中,它們是類變量——所有實例變量都需要在__init__
定義為self
屬性)。 然后,您可以User
您想要的任何用戶名和密碼初始化User
,如果您真的希望它們沒有任何價值,則包括None
。
在您的代碼中:
class User:
UserName
Password
UserName
和Password
被解析為表達式。 由於此時尚未分配它們,因此您會收到NameError
。
在 Python 中,變量必須先用賦值語句定義,然后才能在表達式中使用,否則會出現 NameError。 請注意,這里的“之前”是指“執行順序”,而不是“源代碼順序”。 還有更多內容(導入語句、全局變量、命名空間技巧),但讓我們在這里保持簡單。
定義“沒有值”的變量的慣用方法是為其分配值None
。
此外,您的代碼看起來確實需要實例成員,而不是類成員。 一些靜態分析工具(如pylint
認可的慣用方法是:
class User(object):
def __init__(self):
self.username = None
self.password = None
此外,從“對象”派生所有類也是很好的 Python 風格,因此您可以使用新式類,並使用 lowercase_with_underscore 或 initialLowerWithCaps 約定命名實例變量。 InitialCaps 樣式非常普遍地保留給類名。
你不能。 在 Python 中,“變量”只是名稱。 名稱始終指向(“綁定”)一個對象。 將尚未具有合理值但應該存在的名稱分配給None
是慣例。
你可能也對我在這里的回答感興趣。
@dataclass
class User:
UserName: str
Password: str
只需分配None
的值:
self.username = None
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.