0

できるだけタイトルに近い。私は OOP (および一般的なコーディング) に非常に慣れていないため、ブラックジャックをプレイするプログラムを作成したいと考えています。作成したオブジェクトを自動的にリストに保存したいので、作成したらリストを使用してそれらを循環させることができます (プレーヤー オブジェクトを作成したいのですが、変数名 (右の単語???) をリストに保存します。ユーザー入力を使用して作成され、自動的にアクセスできます。

これまでのところ、私はこれを構築しました:

ROSTER = []   

class Player():
"""player in the game"""

    def __init__(self, name, score= 0):
        self.name = name
        self.score = score
        ROSTER.append(self.name)

しかし、もちろん、これは変数 self.name に入れられた名前だけを私に与えます...どうすれば変数名をキャプチャできますか(正しい用語ですか?)。self.name は(私の知る限り)次の方法で個々のオブジェクトにアクセスできません。

がらくたのフォーマットを許してください。=/

また、間違った用語を使用している場合は、修正してください。すべての用語をマスターする限り、独学はちょっと難しいです。

編集:申し訳ありませんが、私の投稿は混乱を招きました。私が投稿したコードは、私が探しているものではなく、行き止まりを示すことを意図したものであり、私の用語はかなり悪いです (ほとんどの場合、私は外国人のように感じます)。変数名と言ったとき、「オブジェクト名」(?) と言うべきだったと思います。

p1 = Player("ボブ")

p2 = Player("訴える")

["p1","p2"] が必要です (または、文字列形式を呼び出すときに問題が発生する場合は、適切な方法が何であれ)。

繰り返しになりますが、非常に紛らわしい最初の投稿で申し訳ありません。願わくば、この編集がもう少し明確で、より焦点を絞ったものになることを願っています。

4

2 に答える 2

2

self代わりに名簿を入れることができます。すなわち:

ROSTER = []

class Player():
    def __init__(self, name, score = 0):
        self.name = name
        self.score = score
        ROSTER.append(self)

次に、次のROSTERようにリストを使用します。

>>> p1 = Player("Jane")
>>> p2 = Player("John")
>>> ROSTER
[<__main__.Player instance at 0x10a937a70>, <__main__.Player instance at 0x10a937a28>]
>>> for p in ROSTER:
...   print p.name, p.score
... 
Jane 0
John 0

または、ROSTER を辞書にすることもできます。

ROSTER = dict()

class Player():
    def __init__(self, name, score = 0):
        self.name = name
        self.score = score
        ROSTER[self.name] = self

そうすれば、 を使用して名前でプレーヤー オブジェクトにアクセスでき、 を使用しROSTER[name]てそれらを切り替えることができますROSTER.values()。例えば:

>>> p1 = Player("Jane")
>>> p2 = Player("John")
>>> print ROSTER["Jane"].name, ROSTER["Jane"].score
Jane 0
>>> print ROSTER["John"].name, ROSTER["John"].score
John 0
>>> for p in ROSTER.values():
...   print p.name, p.score
... 
Jane 0
John 0
于 2012-06-22T06:10:30.173 に答える
1

これについて話しているのですか?

ROSTER = []   

class Player():

    def __init__(self, name, score= 0):
        self.name = name
        self.score = score
        ROSTER.append(self)

a=Player('Jack',100)
b=Player('Blackk',1000)
c=Player('Mike')

for x in ROSTER:
    print(x.name,x.score)

出力:

Jack 100
Blackk 1000
Mike 0
于 2012-06-22T06:23:25.727 に答える