如何在Python中声明没有值的属性?

53 投票
6 回答
89839 浏览
提问于 2025-04-15 18:12

在C#中,我会这样做:

string UserName;
string Password;

但是现在,在Python中:

class User:
    UserName
    Password

我收到一个错误,提示UserName没有定义。难道我不能在没有变量的情况下声明一个变量吗?

6 个回答

12

Python 3.7 及以上版本的数据类:

@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

撰写回答