是否有必要初始化静态类变量?

时间:2017-06-08 20:12:21

标签: python class-variables

几天前我开始学习python,我正在尝试不同的东西。

我编写的代码如下:

class ConsumeState:
    token

此代码出现以下错误

NameError: name 'token' is not defined

所以我将token初始化为"abc",错误消失了。

我的问题是如果我不想在此时定义静态变量该怎么办呢?是否总是需要在python中初始化静态变量?

1 个答案:

答案 0 :(得分:0)

与C,Java,C#等不同,在python中,您不必初始化变量,甚至声明它是String或int或float。

您可以这样声明:

u=set()
u.add("stack")
u.add("overflow")

你也可以这样做:

u=set(["stack","overflow"])

这是一个单行,但先创建一个列表,然后创建一个列表。

这将创建一个列表,其中包含0-4中所有数字的幂。您不需要声明l是列表然后在其中添加内容。你也不需要声明x是一个int或甚至初始化它。

l = [x for x in range(5)]

在python中你也可以这样做:

s="stack"
s=[x for x in "overflow"]

看到了吗?我只是将s的类型从字符串更改为列表。我也可以在同一个列表中添加不同的对象。

s.append(5)

如果我现在打印s,我会得到这个:

['o', 'v', 'e', 'r', 'f', 'l', 'o', 'w', 5]

5仍然是仅包含字符串对象的列表中的整数。

我也可以使用与其他对象不相同的整数进行操作

print(s[-1:][0]/5)

这例如打印5/5。 s [-1:]告诉python返回最后一个对象的列表。在该列表中,我选择[0],即5,然后将其除以5。

如果我要做一个forloop,我会得到错误,我不能使用除了字符串类型的除法运算。

如果你要做这样的事情:

u=set()
def pwsdw():
    some code here..
    u.add(x)

您会收到错误,表示您没有初始化变量。

你可以这样做:

u=set()
def pwsdw():
    global u
    some code
    u.add(x)

总而言之,python是一种非常灵活的语言。玩得开心。