私は昨夜遅くに似たような、しかしお粗末な質問をしました(インスタンス変数へのアクセスですが、Pythonのインスタンスメソッドではありません)。これはかなりの混乱を引き起こしました。できれば削除しますが、できません。
これで、質問をより明確に行うことができます。
背景:Python構文を学ぶためにブラックジャックゲームを構築しようとしています。各ハンドはHandクラスのインスタンスであり、現在、ハンドを分割できるようにしようとしています。したがって、ハンドを分割するときは、2つの新しいハンドインスタンスを作成する必要があります。さらに分割する可能性があることを考えると、同じ方法を再分割して手を再分割したいと思います。したがって、(私は)Handクラスを動的にインスタンス化する必要があります。
以下は、メカニズムをブロックするために使用しているコードスニペットです。
import os
os.system("clear")
class Hand():
instances=[]
def __init__(self, hand_a, name):
Hand.instances.append(self)
self.name = name
self.hand_a = hand_a
def show_hand(self):
ln = len(self.hand_a)
for x in range(ln):
print self.hand_a[x]
class Creation():
def __init__(self):
pass
def create_name(self):
hil = len(Hand.instances)
new_name = 'hand_' + str(hil + 1)
return(new_name)
def new_instance(self):
new_dict = {0: 'Ace of Clubs', 1: '10 of Diamonds'}
new_hand_name = {}
new_hand_name.setdefault(self.create_name(), None)
print new_hand_name
new_hand_name[0] = Hand(new_dict, self.create_name())
print new_hand_name[0]
hand = Hand("blah", 'hand')
hand_z = Hand("blah_z", 'hand_z')
creation = Creation()
creation.new_instance()
出力は次のとおりです。
{'hand_3': None}
<__main__.Hand instance at 0x10e0f06c8>
次のステートメントによって作成されたインスタンスに関して:
new_hand_name[0] = Hand(new_dict, self.create_name)
new_hand_name[0]
newはインスタンスを参照する変数ですか?または、hand_3
変数ですか?
つまり、インスタンスメソッドを呼び出すときに、使用できますhand_3.show_hand()
か?