0

私はまだ学んでおり、x がどのようにこれを行うか、y がどのようにそれを行うかをよりよく理解するために、最終的に定期的に将来的に行うことを構築するのが好きです。

クラスがどのように機能するかについてはまだあまり学んでいませんが、複数のクラスを通過する呼び出しを設定しました。

getattr(monster, monster_class.str().lower())(1)

これを呼び出す:

class monster:
def vampire(x):
    monster_loot = {'Gold':75, 'Sword':50.3, 'Good Sword':40.5, 'Blood':100.0, 'Ore':.05}
    if x == 1:
        loot_table.all_loot(monster_loot)

順番にこれを呼び出します...

class loot_table:
def all_loot(monster_loot):
    loot = ['Gold', 'Sword', 'Good Sword', 'Ore']
    loot_dropped = {}

    for i in monster_loot:
        if i in loot:
            loot_dropped[i] = monster_loot[i]

    drop_chance.chance(loot_dropped)

そして、いよいよ最後の授業へ。

class drop_chance:
def chance(loot_list):

    loot_gained = []

    for i in loot_list:
        x = random.uniform(0.0,100.0)

        if loot_list[i] >= x:
            loot_gained.append(i)

    return loot_gained

そして、loot_gained を返さないことを除けば、すべて機能します。私はそれが単にloot_tableクラスに返されていると仮定しています.投稿された最初の行までそれをバイパスする方法がわかりません. 洞察を得ることができますか?

4

2 に答える 2

1

使い続けるreturn

def foo():
  return bar()

def bar():
  return baz()

def baz():
  return 42

print foo()
于 2013-07-25T03:18:21.923 に答える
0

クラスがどのように機能するかについてはまだあまり学んでいません...

やや非公式に言えば、クラス定義は、将来作成されるそのクラスのオブジェクト (別名クラスのインスタンス) の記述です。クラス定義には、コード (メソッドの定義) が含まれています。オブジェクト (クラス インスタンス) には基本的にデータが含まれます。メソッドは、引数を取ることができ、オブジェクトのデータを操作できる一種の関数です。

このように、クラスは実世界のオブジェクトの動作を表す必要があり、クラス インスタンスは実世界のオブジェクトの存在をシミュレートします。メソッドは、オブジェクトがそれ自体に適用するアクションを表します。

その観点から、クラス識別子は、クラスのオブジェクトのカテゴリを説明する名詞である必要があります。クラス インスタンス識別子は、オブジェクトに名前を付ける名詞でもある必要があります。メソッド識別子は通常、アクションを説明する動詞です。

あなたの場合、少なくともclass drop_chance:このように名前を付けているため、少なくとも疑わしいです。

オブジェクトについて合理的なものを出力したい場合は、たとえば、クラスprint(monster)のメソッドを定義する-- を使用して、 doc__str__()を参照してください。

于 2013-07-25T10:48:30.177 に答える