我要执行以下代码:
import math
class A(object):
def someNum(self, num):
num = int(math.log2(num))
return num
a = A()
a.someNum('9')
但是会引发异常:
Traceback (most recent call last):
File "main.py", line 34, in <module>
a.numToLoc('9')
File "main.py", line 30, in numToLoc
num = int(math.log2(num))
AttributeError: 'module' object has no attribute 'log2'
我想念什么?
答案 0 :(得分:4)
答案 1 :(得分:0)
您有一个名为math.py
的文件,位于与您尝试运行的代码相同的目录中。删除或重命名。
当您import math
时,Python会遍历sys.path
中的目录并导入名为math.py
的第一个文件(或带有math
的名为__init__.py
的目录里面的文件)。 sys.path
中的第一个条目是当前目录,因此它将首先看到您的math.py
。
请参阅modules或the import
statement的文档。
答案 2 :(得分:-1)
如已建议使用Python3.3或更高版本
要么
使用math.log(num, 2)
还需要稍作修改。
请更改
a.someNum('9')
到
a.someNum(9)
否则发生此错误。
TypeError: a float is required