对python代码中对象的质疑

对python代码中对象的质疑,python,Python,我从指南中复制了一段python代码: class Carta: ListaSemi=["Fiori","Quadri","Cuori","Picche"] ListaRanghi=["impossibile","Asso","2","3","4","5","6",\ "7","8","9","10","Jack","Regina","Re"] def __init__(self, Seme=0, Rango=0): s

我从指南中复制了一段python代码:

class Carta:

    ListaSemi=["Fiori","Quadri","Cuori","Picche"]
    ListaRanghi=["impossibile","Asso","2","3","4","5","6",\
                "7","8","9","10","Jack","Regina","Re"]

    def __init__(self, Seme=0, Rango=0):
        self.Seme=Seme
        self.Rango=Rango 

    def __str__(self):
        return (self.ListaRanghi[self.Rango] + " di " + self.ListaSemi[self.Seme])

    def __cmp__(self, Altro):
        #controlla il seme
        if self.Seme > Altro.Seme: return 1
        if self.Seme < Altro.Seme: return -1

        #se i semi sono uguali controlla il rango
        if self.Rango > Altro.Rango: return 1
        if self.Rango < Altro.Rango: return -1

        return 0
class-Carta:
ListaSemi=[“Fiori”、“Quadri”、“Cuori”、“Picche”]
ListaRanghi=[“不可能”、“可能”、“2”、“3”、“4”、“5”、“6”\
“7”、“8”、“9”、“10”、“Jack”、“Regina”、“Re”]
定义初始值(self,Seme=0,Rango=0):
self.Seme=Seme
self.Rango=Rango
定义(自我):
return(self.ListaRanghi[self.Rango]+“di”+self.ListaSemi[self.Seme])
def u u cmp __;(自身、备用):
#表面控制
如果self.Seme>Altro.Seme:返回1
如果self.SemeAltro.Rango:返回1
如果self.Rango
当我从shell打电话时:

>>> Carta1=Carta(1,11)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'module' object is not callable
Carta1=Carta(1,11) 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 TypeError:“模块”对象不可调用
我使用的是python 2.7版。 怎么了??
谢谢

我假设上面的代码片段保存为
Carta.py
,并且您在交互式shell中运行:

>导入Carta
>>>Carta1=Carta(1,11)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:“模块”对象不可调用
通过这种方式,您可以尝试调用/实例化模块,而不是其中的类。基本上有两种方法可以解决此问题,即更改导入或构造函数调用:


如果重命名模块文件或类以便更好地区分它们,则会变得清晰。

我假设上面的代码段保存为
Carta.py
,并且您在交互式shell中运行:

>导入Carta
>>>Carta1=Carta(1,11)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:“模块”对象不可调用
通过这种方式,您可以尝试调用/实例化模块,而不是其中的类。基本上有两种方法可以解决此问题,即更改导入或构造函数调用:


如果重命名模块文件或类以便更好地区分它们,则会变得清晰。

您没有显示要导入的内容;看起来您导入了模块,而不是其中的类。我复制了您的代码,工作正常。将代码保存在文件中,然后尝试运行您的文件而不是python shell,并将其作为模块导入;看起来您导入了模块,而不是其中的类。我复制了您的代码,工作正常。将代码保存在文件中,然后尝试运行您的文件而不是python shell,并将其作为模块导入。另外,请参阅来自PEP008的。因此,在本例中,它将建议模块名为
carta.py
,并且类与原始代码中的类相同-
carta
。此外,请参阅来自PEP008的。因此,在本例中,它将建议模块名为
carta.py
,并且类与原始代码中的类相同-
carta
>>> from Carta import Carta
>>> Carta1=Carta(1,11)
>>> import Carta
>>> Carta1=Carta.Carta(1,11)