编程(Python)只花了几个月左右的时间,我正在努力解决这个问题,这样我就不会编写效率低下的代码
假设我正在为游戏中的默认敌人创建类。我使用'ENEMY01'和'HERO01'只是为了清楚起见(它们都可以被认为是'相同'的类写得不同)。考虑这个伪代码;如果有任何错误,那只是因为我在这篇文章中错过了它们,而且代码本身没有问题。如果你有一个更有效的方式来写我写的东西,虽然,它将不胜感激
例1-
class ENEMY01:
attack = randint(0,20)
defense = randint(1,20)
health = 100
例2-
class HERO01:
def __init__(self, attack=randint(1,20),defense=randint(1,20), health=100)
self.attack = attack
self.defense = defense
self.health = health
在我看来,示例1更好,因为它更短,更容易理解。对于示例2,由于默认值的存在,您可以使用默认值,也可以在实例化时更改它们。我知道这可能是一个小的好处,但我注意到你也可以改变这些默认值后,创建与这两个例子反正-
Jobo = ENEMY01()
Jobo.attack
10
Jobo.attack = 15
Jobo.attack
15
Bobo = HERO01()
Bobo.attack
10
Bobo.attack = 15
Bobo.attack
15
如果我想给其中一个添加一个新属性(我认为这叫做instance属性,因为它不会改变类),那么这两个属性似乎都没有限制-
Bobo.scream = 'Ouch'
Bobo.scream
'Ouch'
Jobo.scream = 'Ouch'
Jobo.scream
'Ouch'
我的noob猜测是因为示例2使用方法(如在“function”中),所以理论上我可以创建示例2的实例,通过向类中的函数添加更多功能(例如,它对某些攻击或条件作出反应的方式),这些实例能够对新的“信息”作出反应。我在想,如果我使用示例1的方法,我就必须在每次需要时在需要的地方添加这种类型的反应式代码,而不是让它在class方法中“生存”?只是我不能通过在示例1中添加函数来解决这个问题吗
那么,与例1相比,例2的优缺点是什么(反之亦然),或者有没有更好的重写方法,让一个比另一个更有优势
侧注- 我现在正在学习一个教程,看起来即使他从示例1开始,并转到了示例2中的样式,我仍然可以完成他在示例1中所做的一切(除了在实例化时更改值),然而,他却让人觉得(没有任何解释)例子2是如此的优越和不同。这就是我的问题。也许在实例化时更改值的能力比我认为的更重要
两者都不是“更好”,因为它们是不同的
对于上述情况,每个新实例将具有不同的随机值
对于上述情况,每个新实例将获得相同的默认值,并在程序的连续运行中更改。如果它为
attack
选择12
,则每个实例都将有一个attack
的12
。下一次启动程序时,将对每个实例应用另一个随机选择的值。也许这次每个实例都是2
另外,类变量与实例变量有本质的不同,不应该用一个来模仿另一个
总的来说,应该将
__init__()
与调用和使用类的方式相匹配相关问题 更多 >
编程相关推荐