有人可以告诉我我可能做错了什么。“模块”对象没有属性“选择” - 尝试使用random.choice
import random
foo = ['a', 'b', 'c', 'd', 'e']
random_item = random.choice(foo)
print random_item
错误
AttributeError: 'module' object has no attribute 'choice'
有人可以告诉我我可能做错了什么。“模块”对象没有属性“选择” - 尝试使用random.choice
import random
foo = ['a', 'b', 'c', 'd', 'e']
random_item = random.choice(foo)
print random_item
错误
AttributeError: 'module' object has no attribute 'choice'
听起来像一个进口的问题:当我运行我的Python代码我不断收到此消息。是否在random
的同一目录中有另一个模块?如果是这样的话(如果你使用的是python2,这是从print random_item
明显可见的),那么它就会导入它。尽量不要隐藏内置的名称。
您可以用下面的代码测试:
import random
print random.__file__
实际random.py
从STDLIB模块住在path/to/python/lib/random.py
。如果你的是其他地方,这会告诉你它在哪里。
通常不是'path/to/python/lib/pythonX.Y/random.py'(除非他使用的是真正老的Python,我认为在2.3之前) ?另外,我不认为2.7会给你.py文件,即使按照3.3+的方式存在.pyc,所以可能是'random.pyc',但我可能会误解这一点。但除了那个小小的挑剔之外,很好的答案。 – abarnert 2014-09-05 23:55:55
我保存我的文件在我的桌面上。 – AMHD 2014-09-06 00:10:26
@abarnert我在我的Python3.3上测试过并且得到了''C:\ Python33 \ lib \ random.py“' – 2014-09-06 00:50:57
在黑暗中拍摄:您可能已将您的脚本命名为random.py
。不要将您的脚本命名为与模块相同的名称。
我这样说是因为random
模块确实有choice
方法,所以导入可能会抓取错误的模块(读取:不需要)。
如果这不能解决它,请检查一个random.pyc文件。 – zimbu668 2016-05-12 19:49:55
简而言之,Python在查找第一个文件时发现它名为“random”,并且没有找到选择属性。
99.99%的时间,这意味着你已经在路径/目录中有一个名为“随机”的文件。如果是这样,请重命名并重试。它应该工作。
我也被命名的方法random
这样得到这个错误:
import random
def random():
foo = ['a', 'b', 'c', 'd', 'e']
random_item = random.choice(foo)
print random_item
random()
这不是你的情况下(命名一个文件random.py
),但其他人搜索这个错误,可能犯这样的错误。
你到底想干什么? – mlwn 2014-09-05 23:49:43
@mlwn他们想从他们的列表'foo'中选择一个随机项目,这不明显吗? – CoryKramer 2014-09-05 23:50:16
该代码完美适用于我...您正在使用哪个版本的Python?哪个操作系统? – mlwn 2014-09-05 23:52:18