Pythonプールにつま先を浸しただけです。クラスと名前空間がどのように相互作用しdel
、スコープからものを削除するか、そしてそのすべての長所を理解しています。
私の質問は簡単です。単純な「helloworld」(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
ではなくに割り当てました__self.name
(ちなみに、これはマングルされてプライベートである必要があります)。
私はそれがどのようにそしてなぜ機能するのかさえ理解しています-それはJava/C#の静的スコープのようなものです。
私が理解していないのは、この種のトリッキーなエラーを回避する方法です。これは明白で簡単であり、私の場合、結果は何もありませんでした。物事はうまくいくはずでしたが、何も起こりませんでした。
Python開発者はこの問題をどのように回避しますか?それは非常に一般的であるように思われます。