1

さて、5つの値の配列を指すキーを持つ辞書があります。これらの 5 つの値をクラスに渡して、整理して情報を提供します。

主要

それで、これはうまくいきますが、私の質問は、「武器」クラスに渡すために配列を抽出するより良い方法があるか、それとも必要'wepstats[0],wepstats[1]'ですか?または、これについてもっと良い方法がありますか?私はこのことをすることだけを学んでいるので、私はすべて耳です。

class Main():
    def weaponDamage(self):
        #print 15 * 2.22

        wdb = WeaponDB()
        wepstats = wdb.getWeaponStats('Sword')
        wep = Weapon(wepstats[0],wepstats[1],wepstats[2],wepstats[3],wepstats[4])
        wep2 = Weapon("Sword", 5, 55, 1.55, 2.1)

        print wep
        print wep2

        s = sayThings()

        greet = s.Say()

        self.crit = wep.getDamageCrtRND()
        self.scrit = wep.getDamageSCrtRND()
        self.avg = wep.getDamageAvg()
        self.high = wep.getDamageHigh()
        self.low = wep.getDamageLow()
        self.mod = wep.getDamageMod()
        self.norm = wep.getDamageNrmRND()
        self.name = wep.getWeaponName()

        print greet
        print "-----------"
        print "Name: " + self.name
        print "-----------"
        print "High: %s" % self.high
        print "Low : %s" % self.low
        print "Avg : %s" % self.avg
        print "Crit: %s" % self.crit
        print "--------------------"

辞書

編集:そもそもこの方法でアイテムの DB を作成する必要がありますか? これを行うためのより論理的な方法はありますか?

class WeaponDB():
    """Here be thine weapons of thy holy might"""

    def __init__(self):
        self.script = {
        'None': "Error: No Weapon stats to get selected.",
        'Sword': ("Sword", 5, 55, 1.55, 2.1),
        }

    def getWeaponStats(self, key = 'None'):
        try:
            return self.script[key]
        except KeyError:
            return self.script['None']

値をパラメーターとして使用するクラス

class Weapon():
    def __init__(self, name = "Stick", high = 1, low = 0, critMod = 1, scritMod = 2):
        self.rng = randNum()
        self.name = name
        self.high = high
        self.low = low
        self.critMod = critMod
        self.scritMod = scritMod

    def getWeaponName(self):
        return self.name

    def getDamageHigh(self):
        return self.high

    def getDamageLow(self):
        return self.low

    def getDamageMod(self):
        return self.critMod

    def getDamageSMod(self):
        return self.scritMod

etc...
4

1 に答える 1

2

私がよく理解していれば、次のようなことができます:

class Weapon:
  def __init__( self, name = 'Stick', high = 1, low = 0 ):
    self.name = name
    self.high = high
    self.low = low

wepstats = ( 'Sword', 5, 55 )

sword = Weapon( *wepstats )

次に、属性を確認すると、次のようになります。

>>> sword.name
'Sword'

>>> sword.high
5

>>> sword.low
55

*wepstatsタプル全体をコンストラクターの引数として渡します。

于 2013-05-28T16:35:45.373 に答える