如何编辑实例变量



我是python的新手,在为类赋值时,我遇到了使用init方法的问题。

class Customer(object):
def __init__(self, number, name):
self.name = name
self.number = number
self.orders = []


def addorder(self, order):
self.orders.extend(order) 
return self.orders
def __str__(self):
return str(self.orders)

Customer('308','John').addorder((1,2,3,4))
print(Customer('308','John'))

输出为空列表[]。

我希望输出为[1,2,4]

我在这里做错了什么?

问题是您有两个Customer对象。即您的打印行:

print(Customer('308','John'))

正在创建一个编号为'308'、名称为'John'的新Customer对象。这与前一行的客户完全无关。

要解决这个问题,你应该将你的第一个对象分配给一个变量(把它想象成一个句柄,让你可以访问对象(,然后打印:

john = Customer('308','John')
john.addorder((1,2,3,4))
print(john)

您正在创建类的两个实例

class Customer(object):
def __init__(self, number, name):
self.name = name
self.number = number
self.orders = []


def addorder(self, order):
self.orders.extend(order) 
return self.orders
def __str__(self):
return str(self.orders)

customer = Customer('308','John')
customer.addorder((1,2,3,4))
print(customer)

请记住,每次;呼叫";类,实例化一个新对象(这就是为什么在Python以外的许多语言中,这实际上需要关键字new(。因此,在您的示例中,您正在实例化两个不同的对象(它们不共享属性(。相反,您应该将它们保存在一个变量中:

customer = Customer("308", "John")
customer.addorder((1, 2, 3, 4))
print(customer)

最新更新