如何在Python中声明没有值的属性?
在C#中,我会这样做:
string UserName;
string Password;
但是现在,在Python中:
class User:
UserName
Password
我收到一个错误,提示UserName
没有定义。难道我不能在没有变量的情况下声明一个变量吗?
6 个回答
12
@dataclass
class User:
UserName: str
Password: str
16
首先,你应该这样重写:
class User(object):
def __init__(self, username, password):
self.username = username
self.password = password
这样一来,用户名和密码就变成了实例变量,而不是类变量(在你的例子中,它们是类变量——所有实例变量都需要在 __init__
方法中作为 self
的属性来定义)。这样,你就可以用任何你想要的用户名和密码来初始化一个 User
,包括 None
,如果你真的想让它们没有值的话。
85
在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