为啥“模块”对象不可调用? [复制]
Posted
技术标签:
【中文标题】为啥“模块”对象不可调用? [复制]【英文标题】:Why is 'module' object not callable? [duplicate]为什么“模块”对象不可调用? [复制] 【发布时间】:2012-11-18 22:06:03 【问题描述】:可能重复:TypeError: ‘module’ object is not callable
这是我第一次尝试 Python,只是想在沉寂 10 年之后重新获得基本的编程知识,对我来说,Python 是一种新语言。基本思想是一个小型的battly引擎,它决定了更好的打击。接下来是错误代码。
self.__power = self.__att*random(2,4)/dier.__defn
由于我的 python 知识非常基础,我很害怕说正确的话,所以我会把我的代码放在下面(47 行),你会注意到它真的很透明,所以我不怀疑这会给任何问题。错误行是 16。尽管出现了新错误,但我尝试将 att 变量重命名为 atta 以及一些重新定位,我解决了它们,最后它总是在同一行出现相同的错误。
class Character:
def __init__(self,name="", att=0,defn=0,lvl=0,leven=0,exp=0, power=0):
self.__att = att
self.__defn = defn
self.__lvl = lvl
self.__leven = leven
self.__name = name
self.__xp = exp
self.__power = power
def batl(self):
import random
while self.__lvl <= 3:
dier = Character("Anaconda",1,1,50,1,0,0)
print "You encountered an " + dier.__name + " and fight it."
**self.__power = self.__att*random(2,4)/dier.__defn**
dier.__power = (dier.__att*random(1,4))/self.__defn
if self.power > dier.power:
growth = dier.__lvl*dier.__atta
groei()
else:
dmg = dier.lvl*dier.att
leven = leven-dmg
if leven < 0:
print "Alas, you're done for."
exit()
else:
print "You took " + dmg + "damage and have " + leven + "life left."
def groei(self):
if (growth+exp) > 100:
lvl += 1
exp = growth-100
print "You won and gained " + str(growth) + " and grew from level " + str(lvl-1) + " to level " + str(lvl) + "."
else:
exp = growth + exp
print "You won and gained " + str(growth) + "."
def main():
hero = Character("Nevery",2,1,2,100,0,0)
hero.batl()
如果 name == 'main': 主要()
如你所见,我得到了我的角色类,我在其中定义了battle() 方法和groei() 方法,非常基本。谁能指出我错过了什么,已经看了几个小时。提前致谢
【问题讨论】:
错误回溯将比您的代码提供更多信息。 另见***.com/questions/1301346/…,因为你真的不想要self.__att
前导双下划线过多。一个就足够了 - 甚至可能一个太多了。
【参考方案1】:
random
是模块,而不是函数。您需要致电random.random
。你也可以from random import random
,但在这种情况下我会选择第一个选项。
【讨论】:
谢谢 :) 我保持随机导入并放入 (self.__att*random.randrange(2,4))/dier.__defn - 现在效果很好【参考方案2】:使用random.random()
代替random
?
【讨论】:
以上是关于为啥“模块”对象不可调用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章