使用类中一个类定义的全局变量

时间:2018-04-23 03:16:00

标签: python

我尝试使用全局变量LAND,它是类Type中类Type的对象。

以下代码给出了一个错误:SyntaxError: invalid syntax因为LAND未定义:

# Define a class named Type
class Type():
    def __init__(self, id, symbol):
        self.id = id
        self.symbol = symbol
    def is_free(self):
        return self.id = LAND.id

# Define variables of this class
LAND = Type(-1, '.')

我无法在LAND的定义之前移动Type,因为这也会给我错误SyntaxError: invalid syntax,因为Type未定义。< / p>

有人可以告诉我是否有可能吗?或者有没有其他方法可以做到这一点?

我问了一个标题不好的问题Python class forward declaration,它被标记为重复,有两个问题,但正如我在原帖中所解释的那样,我不认为我的问题与那些问题相同二:

我看过帖子Is it possible to forward-declare a function in Python?,但我不认为这是同一个问题。因为问题是关于function的前瞻声明,而我是在问class

我还阅读了这篇文章Does Python have class prototypes (or forward declarations)?,但是它询问了引用另一个类中的类,而我在询问是否在类中引用自己类型的变量。我在这篇文章中没有看到我的解决方案,或者是否有人认为它的重复解释了一点?

1 个答案:

答案 0 :(得分:3)

  

以下代码给出了错误SyntaxError: invalid syntax,因为LAND未定义

不,您收到SyntaxError,因为作业a = b(在您的特定情况下为self.id = LAND.id)不是表达式,这意味着它不会产生值您可以return

当您将=更改为==时,您的代码可以正常工作,这就是我想要的。或者(我有点不确定你的代码应该发生什么),你可以写两行:

self.id = LAND.id
return self.id

无论如何,这里的问题不是创建LAND时未定义is_free。这不是问题,因为还没有人打电话给is_free。问题是您可能认为(因为您似乎来自C背景),=的赋值会产生一个值,而Python则不然。