Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 类型错误:';int';对象不可调用-抱歉,如果AP 等级车: #建造师 定义初始(自我、品牌、型号、年份、mpg): #实例变量 self.carMake=make self.carModel=model self.carYear=年 自我效能=每加仑 self.gas=0 #特殊方法 定义(自我): 返回“%s%s%s”%(self.carYear、self.carMake、self.carModel) def加油(自身,加仑): 如果加仑回溯(最近一次调用):文件“”,第1行,在 > >c1.gas()类型错误:“int”对象不可调用_Python_Self - Fatal编程技术网

Python 类型错误:';int';对象不可调用-抱歉,如果AP 等级车: #建造师 定义初始(自我、品牌、型号、年份、mpg): #实例变量 self.carMake=make self.carModel=model self.carYear=年 自我效能=每加仑 self.gas=0 #特殊方法 定义(自我): 返回“%s%s%s”%(self.carYear、self.carMake、self.carModel) def加油(自身,加仑): 如果加仑回溯(最近一次调用):文件“”,第1行,在 > >c1.gas()类型错误:“int”对象不可调用

Python 类型错误:';int';对象不可调用-抱歉,如果AP 等级车: #建造师 定义初始(自我、品牌、型号、年份、mpg): #实例变量 self.carMake=make self.carModel=model self.carYear=年 自我效能=每加仑 self.gas=0 #特殊方法 定义(自我): 返回“%s%s%s”%(self.carYear、self.carMake、self.carModel) def加油(自身,加仑): 如果加仑回溯(最近一次调用):文件“”,第1行,在 > >c1.gas()类型错误:“int”对象不可调用,python,self,Python,Self,在\uuu init\uuuu()方法中将self.gas初始化为int,但随后还定义了一个名为gas()的方法。一旦\uuuu init\uuuu()运行,self.gas就是一个int。我猜您在某个地方对此类的实例调用了gas() 将您的gas()方法重命名为类似于print\u gas(),或者,无论您在何处调用此方法,只需在名为Test.py的文件中执行print c1.gas()即可,而不用执行c1.gas() class Car: # constructor def

\uuu init\uuuu()
方法中将
self.gas
初始化为
int
,但随后还定义了一个名为
gas()
的方法。一旦
\uuuu init\uuuu()
运行,
self.gas
就是一个
int
。我猜您在某个地方对此类的实例调用了
gas()


将您的
gas()
方法重命名为类似于
print\u gas()
,或者,无论您在何处调用此方法,只需在名为Test.py的文件中执行
print c1.gas()
即可,而不用执行
c1.gas()

class Car:
    # constructor
    def __init__(self, make, model, year, mpg):
        # instance variables
        self.carMake = make
        self.carModel=model
        self.carYear = year
        self.efficiency=mpg
        self.gas = 0

    # special method
    def __str__(self):
        return "%s %s %s"%(self.carYear, self.carMake, self.carModel)

    def refuel(self,gallon):
        if gallon < 0:
            print("Sorry, amount cannot be negative")
        else:
            self.gas=self.gas+gallon
            print (self.gas)
            print("Added %.2f gallon of gas to the tank"%(self.gas))

    def gas(self):
        print(self.gas)


> Traceback (most recent call last):   File "<pyshell#12>", line 1, in
> <module>
>     c1.gas() TypeError: 'int' object is not callable
现在,我在控制台中导入类测试,看看它有哪些方法:

class Test:
    def __init__(self):
        self.x=3
    def x(self):
        print self.x
请注意,它具有方法x。现在让我们创建一个Test的实例

>>> from test import Test
>>> [method for method in dir(Test) if callable(getattr(Test, method))]
['__init__', 'x']
让我们看看我们有什么方法

>>> k=Test()
如您所见,方法x不再可用。为什么?

当您创建k作为测试实例时,它执行
\uuu init\uuu
方法,并看到
self.x=3
,它将x重新定义为
self
中的一个变量,并且您的方法
x()
消失了。因此,当您执行
k.x()
时,它认为您是在
self.x
上执行的,您在
\uuuuuu init\uuuuuu
中设置了该选项,该选项不可调用。但是,
k.x
将起作用,如下所示:

>>> [method for method in dir(k) if callable(getattr(k, method))]
['__init__']
>>>
>>k.x()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:“int”对象不可调用
>>>k.x
3.
>>>

结论是不要将变量和方法命名相同。

您的方法
gas
和您在
\uuu init\uu
中创建的实例属性
gas
具有相同的名称。该方法存储在类上,但被存储在实例上的属性“隐藏”,因为Python首先在实例上查找名称,然后在类及其父对象上查找名称

因此,
self.gas
是一个整数,不能调用它

>>> k.x()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
>>> k.x
3
>>>