私はPythonを学ぶためのミニゲームを書いています。 main.pyファイルにインポートできる武器クラスを作成しました。ここでクラスメソッドがPython 2.7.1で間違った数値を返す
は私が作ったクラスです。ここ
class weapon(object):
def __init__(self, name):
self.weaponName = name
def weaponStrength(self, level, strength):
self.weaponLevel = level
self.weaponStrength = strength
damage = self.weaponStrength * level
print "Damage is equal to %r" % damage
return damage
は武器クラスを使用して作成されたオブジェクトです。
# Creates an Object called sword using the weaponsClass
sword = weapon("sword")
# Calls a method of the weaponsClass to calculate weapon Strength. Returns a int
sword.weaponStrength(3, 20)
# Creates an Object called Magic Staff using the weaponsClass
magicStaff = weapon("Magic Staff")
# Calls a method of the weaponsClass to calculate weapon Strength. Returns a int
magicStaff.weaponStrength(5, 30)
# Sets a variable
swordStrength = sword.weaponStrength
# Sets a variable
magicStaffStrength = magicStaff.weaponStrength
# Prints the variable
print swordStrength
# Prints the variable
print magicStaffStrength
私はswordStrengthとmagicStaffStrengthは、メソッドに渡された強度値に等しい理由を把握しようとしています。
ご迷惑をおかけして申し訳ありません。
ありがとうございました。あなたはweapon
名前空間にweaponStrengthを上書きしている
にサイドノート方法を分割することをお勧めしたい:そのより保守をし、 weaponStrength()関数から別の副作用にきれいにします。つまり、weaponStrength()はダメージ()のようにリターンされるべきで、print関数はすべて削除する必要があります。これはあなたのself.weaponStrength属性があなたのself.weaponStrength()関数と同じ名前であるという事実を緩和するのに役立ちます。 – hexparrot
ここであなたの構造を考えれば、強さとレベルを設定する 'set_characteristics'関数と、ダメージを受ける' get_damage'関数があることを指摘しておきます。あるいは、特性が設定された後に変更されることを意図していない場合、 'set_characteristics'呼び出しで設定されたストレートメンバー変数を持つことができます。 –
@hexparrot swordStrength変数を設定すると間違っていたので、値を表示するためにprint関数をそこに配置しました。私はそれを削除し、sr2222によって言及された変更を行うつもりです。ご意見をいただきありがとうございます。 – TDNS