【问题标题】:Can someone help me on why this python script won't run?有人可以帮我解释为什么这个 python 脚本不能运行吗?
【发布时间】:2010-12-04 06:37:57
【问题描述】:
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
>>> 

【问题讨论】:

标签: python debugging


【解决方案1】:

base62 似乎是您的模块和该模块内的函数的名称。试试:

>>> import base62
>>> b = base62.base62(3)

【讨论】:

    【解决方案2】:

    阅读错误信息:

    TypeError: 'module' object is not callable

    TypeError 表示存在Error,因为Type 有问题。有问题的是base62。这是因为base62 是您的module 的名称,而不是callable 事物。 “callable”,顾名思义,就是“能够被调用”。

    您要调用的是定义在模块中的函数。该函数也被命名为base62,但该函数不可用该名称,因为现在该名称代表模块。

    幸运的是,模块中的函数被表示为模块的属性。因此,您可以以base62.base62 的形式访问它:base62 属性(该语法中的 second 属性)无论base62(第一个)是什么。在这种情况下,base62 模块中的base62 函数。

    或者,您可以只从模块中导入该函数,方法是告诉 Python 从模块中导入什么。这是自然而然的,但不是按照您可能期望的顺序:您将其写为from base62 import base62。 (同样,模块名称 - 您要导入的内容 - 首先出现,函数名称 - 从中​​导入的内容 - 第二。)

    【讨论】:

    • OP 也不擅长阅读文档等内容。
    猜你喜欢
    • 1970-01-01
    • 2014-10-13
    • 2015-08-31
    • 2016-07-14
    • 1970-01-01
    • 2017-09-02
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    相关资源
    最近更新 更多