TypeError: 'tuple' object ist nicht aufrufbar, wenn Sie versuchen, um call-Methode
Hier ist, was ich habe, gehen so weit:
# -*- coding: cp1252 -*-
import time
class Item():
def __init__(self, name, description, base_value):
self.name = name
self.description = description
self.ingredients = ingredients
self.base_value = value
def __str__(self):
return format(self.name, self.description, self.ingredients, self.base_value)
class Metal(Item):
def __init__(self, name, description, ingredients, base_value):
self.smelt_time = smelt_time
self.smelted = smelted
def __str__(self):
return format(self.name, self.description, self.ingredients, self.base_value, self.smelt_time, self.smelted)
class Bronze_Ingot(Metal):
def __init__(self):
self.name = "Bronze Ingot",
self.description = "A refined ingot of bronze."
#self.ingredients = Tin_Ore(1)+Copper_Ore(1) <--- I will get these lines working later...
self.base_value = 33
self.smelt_time = 15
self.smelted = ()
class Fuel(Item):
def __init__(self, name, description, ingredients, base_value):
self.fuel_time = fuel_time
def __str__(self):
return format(self.name, self.description, self.ingredients, self.base_value, self.fuel_time)
class Cloth(Fuel):
def __init__(self):
self.name = "Cloth",
self.description = "A piece of cotton cloth."
#self.ingredients = 2 Cotton <--- I will get these lines working later...
self.base_value = 2
self.fuel_time = 5
Aber ich habe grosse Mühe mit dieser Funktion...
def smelted(Fuel, Metal):
if (Fuel.fuel_time - Metal.smelt_time) > 0:
time.sleep(1)
print "Smelting", Metal.name, "..."
time.sleep(Metal.smelt_time)
print "Time to forge!"
Das problem ist mehr oder weniger damit es funktioniert. Mein Freund und ich haben ALLES versucht, was wir denken kann, die beim ausführen dieser Funktion, aber ohne Erfolg. Hier ist unsere jüngste Versuch:
from Smelting_Progress import *
x = Cloth()
y = Bronze_Ingot()
y.smelted(x,y)
Nach dem Versuch ausführen, erhielt ich diese Fehlermeldung:
Traceback (most recent call last):
File "C:\Users\WCS-HSSTUDENT\Desktop\Files\Project SAOffline\Coding\New Aincrad World\Items\NAI_Smelted.pyw", line 6, in <module>
Metal.smelted(Fuel, Metal)
TypeError: 'tuple' object is not callable
- Unrelated: Sie haben vergessen, rufen Sie die Eltern Konstruktoren in Ihrem
__init__
Funktionen. - Beachten Sie, dass Ihre traceback passt nicht zu deinem code geschrieben.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie eine Instanz-Attribut
smelted
; legen Sie es inMetal.__init__()
:Ihre
Bronze_Ingot
Unterklasse legt es auf ein leeres Tupel:Können Sie nicht sowohl eine Methode und ein Tupel den gleichen Namen verwenden. Benennen Sie eine oder das andere.
Wenn Sie gedacht, um verwenden Sie Ihre
smelted()
code als Funktion, dann definieren Sie auf der obersten Ebene (gleiche Einrückung wie Ihre Klassen), und rufen Sie es als eine Funktion, nicht eine Methode:(Achtung, keine
y.
vor).y.smelted
, was ist das Tupel. Wennsmelted(Fuel, Metal)
soll ein - Funktion ist es dann nicht eine Methode von einer Ihrer Klassen und sollte nicht aufgerufen werden, auf eine Instanz. Entfernen Sie diey.
.def smelted()
auf der obersten Ebene, nicht eingerückt wie die Methoden einer Klasse. 🙂fuel_time
undsmelt_time
Werte.. denkst du 5 - 15 wird größer als 0 sein?