我刚刚将脚趾浸入 Python 池中。我了解类和命名空间如何交互,del
只是从范围中删除东西,以及所有这些好处。
我的问题很简单。我做了一个简单的“hello world”(Pygame)应用程序,但犯了一个严重错误(下面的简单案例):
class Cat:
__name = ""
def __init__(self, newName):
__name = newName
def meow(self):
print "Hi from {0}".format(self.__name)
c = Cat("Mittens")
c.meow(); # prints: "Hi from "
事后看来,我的错误很明显:在我的方法(构造函数,特别是这里)中,我分配了一个值 to__name
而不是 to __self.name
(顺便说一下,它应该是损坏的和私有的)。
我什至了解它的工作原理和原因——它有点像 Java/C# 中的静态作用域。
我不明白的是如何避免这些棘手的错误。这很明显,很容易,而在我的情况下,结果是什么都没有——事情应该会奏效,但什么也没发生。
Python 开发者如何避免这个问题?似乎它会很常见。