class Product(object):
def __init__(self, ind, name, price, quantity):
self.ind = ind
self.name = name
self.price = price
self.quantity = quantity
inventory = list()
def add(self):
inventory.append(Product(self.ind))
inventory.append(Product(self.name))
inventory.append(Product(self.price))
inventory.append(Product(self.quantity))
print('product %s added')%name
Product.add(63456, 'Meow', 60.00, 0)
我仍然收到错误:
Product.add(63456, 'Meow', 60.00, 0)
TypeError: unbound method add() must be called with Product instance as first argument (got int instance instead)
我不知道这有什么问题,因为我刚开始学习课程。
需要改变什么?
答案 0 :(得分:0)
您正在调用该方法,就好像它是一个静态方法一样。这是一个实例方法。您需要创建Product
的实例,然后在该实例上调用该方法。
my_product = Product(63456, 'Meow', 60.00, 0)
my_product.add()
答案 1 :(得分:0)
您的方法调用错误。你应该用对象引用来调用它。还有一件事你需要将列表定义为全局,那么只有你能够追加下一个元素。否则会给出 NameError:全局名称'inventory'未定义错误。 试试这个:
class Product(object):
def __init__(self, ind, name, price, quantity):
self.ind = ind
self.name = name
self.price = price
self.quantity = quantity
global inventory
inventory = []
def add(self):
inventory.append(self.ind)
inventory.append(self.name)
inventory.append(self.price)
inventory.append(self.quantity)
print('product %s added')% self.name
obj = Product(63456, 'Meow', 60.00, 0)
obj.add()
或者如果您想为每个对象分别设置清单副本,请将清单定义为self.inventory = []
因此,您的代码将类似于:
class Product(object):
def __init__(self, ind, name, price, quantity):
self.ind = ind
self.name = name
self.price = price
self.quantity = quantity
self.inventory = []
def add(self):
self.inventory.append(self.ind)
self.inventory.append(self.name)
self.inventory.append(self.price)
self.inventory.append(self.quantity)
print('product %s added')% self.name
obj = Product(63456, 'Meow', 60.00, 0)
obj.add()