私はこの主題についてたくさん書かれていることを知っています。しかし、私はそれの多くを吸収することはできません。おそらく、私はコンピュータサイエンスのトレーニングを受けずに、自分自身を教えている完全な初心者だからです。とにかく、もしあなたの頭脳がこの特定の例に耳を傾けるなら、あなたは私のような他の初心者を助けるでしょう。
そこで、次の関数を作成しました。これは、「funky.py」という独自のファイルであるため、(モジュールとして?)呼び出すと問題なく機能します。
端末に次のように入力します。
python classy.py
そしてそれはうまく動作します。
def load_deck():
suite = ('Spades', 'Hearts')
rank = ('2', '3')
full_deck = {}
i = 0
for s in suite:
for r in rank:
full_deck[i] = "%s of %s" % (r, s)
i += 1
return full_deck
print load_deck()
しかし、同じ関数をクラスに入れると、エラーが発生します。
'classy.py'のコードは次のとおりです。
class GAME():
def load_deck():
suite = ('Spades', 'Hearts')
rank = ('2', '3')
full_deck = {}
i = 0
for s in suite:
for r in rank:
full_deck[i] = "%s of %s" % (r, s)
i += 1
return full_deck
MyGame = GAME()
print MyGame.load_deck()
次のエラーが発生します。
Traceback (most recent call last):
File "classy.py", line 15, in <module>
print MyGame.load_deck()
TypeError: load_deck() takes no arguments (1 given)
そこで、定義行を次のように変更しました。正常に機能します。
def load_deck(self):
'self'の使用を要求するクラスに関数を配置することについてはどうですか。私は「自己」が単なる慣習であることを理解しています。では、なぜ議論が必要なのですか?クラス内から呼び出された場合、関数の動作は異なりますか?
また、これはほとんど重要ですが、なぜ私のクラスはinitを使用しないで機能するのですか?initを使用すると、クラスで何ができますか?
基本的に、私が6歳のように誰かが私にこれを説明する時間があれば、それは助けになるでしょう。助けてくれてありがとう。