【发布时间】:2012-04-10 19:49:03
【问题描述】:
我正在编写一个小游戏来学习 Python。我创建了一个可以导入到我的 main.py 文件中的武器类。
这是我制作的课程:
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 等于传递给方法的强度值。
非常感谢任何帮助。
谢谢。
【问题讨论】:
-
附注:将副作用与武器强度()函数分开,更易于维护和清洁。也就是说, WeaponStrength() 应该重命名为像 damage() 这样它返回的东西,并且应该完全删除 print 函数。这应该有助于缓解您的 self.weaponStrength 属性与您的 self.weaponStrength() 函数同名的事实。
-
我还要指出,考虑到您的结构,您可能意味着有一个设置强度和级别的
set_characteristics函数,以及一个获得伤害的get_damage函数。或者,如果特性在设置后不打算更改,您可以在set_characteristics调用中设置一个直接成员变量。 -
@hexparrot 我把 print 函数放在那里查看值,因为当我设置 SwordStrength 变量时它是错误的。我将删除它并进行 sr2222 提到的更改。感谢您的反馈。
-
@sr2222 你是对的。这将使它更清洁。感谢您的意见。