我是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)