import numbers
class base62(numbers.Number):
digits='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
def __init__(self,value):
if isinstance(value,int):
self.value=value
if value==0:
self.string='0'
else:
self.string='' if value>0 else '-'
while value!=0:
value,d=divmod(value,62)
self.string=self.digits[d]+self.string
elif isinstance(value,(str,bytes)):
assert(value.isalnum())
self.string=str(value)
self.value=0
for d in value:
self.value=self.value*62+self.digits.index(d)
def __int__(self):
return self.value
def __str__(self):
return self.string
def __repr__(self):
return self.string
Python 2.6.6 (r266:84292, Sep 15 2010, 15:52:39)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import base62
>>> b = base62(3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'module' object is not callable
>>>
答案 0 :(得分:3)
base62
似乎是您的模块和该模块中的函数的名称。尝试:
>>> import base62
>>> b = base62.base62(3)
答案 1 :(得分:2)
阅读错误消息:
TypeError: 'module' object is not callable
TypeError
表示有一个Error
,因为某些内容错误Type
。有问题的是base62
。这是因为base62
是您module
的名称,而不是callable
。听起来,“可驯服”意味着“能够被称为”。
您想要调用的是在模块中 中定义的函数。该函数也被命名为base62
,但该名称不能使用该函数,因为此时该名称代表模块。
幸运的是,模块中的函数表示为模块的属性。因此,您可以base62.base62
访问base62
:base62
属性(该语法中的第二个属性)base62
(第一个)。在这种情况下,base62
模块中的from base62 import base62
函数。
或者,您可以通过告诉Python从模块导入什么来从模块中仅导入该函数。这是自然而然的,但不按照您可能期望的顺序编写:您将其写为{{1}}。 (同样,模块名称 - 你要从哪里导入 - 首先出现,而函数名称 - 从中导入的是 - 第二个。)