Python的新功能:尝试从列表打印对象属性
我试图自学来自java的python,并编写了这个简单的程序。我有另一个类,用于创建对象“item”和“shopping cart”。在购物车的构造函数中,我创建了一个空列表,向其中添加对象。如果我试图打印对象的属性,我不知道语法应该是什么。我上面所说的显然是错的。 抱歉,如果这是一个简单的答案,任何帮助都将不胜感激。 谢谢Python的新功能:尝试从列表打印对象属性,python,Python,我试图自学来自java的python,并编写了这个简单的程序。我有另一个类,用于创建对象“item”和“shopping cart”。在购物车的构造函数中,我创建了一个空列表,向其中添加对象。如果我试图打印对象的属性,我不知道语法应该是什么。我上面所说的显然是错的。 抱歉,如果这是一个简单的答案,任何帮助都将不胜感激。 谢谢 如果不去看另一个班,我肯定什么都不能说。但我认为问题可能是由承包商造成的。我看到的是,您没有将任何值传递给构造函数,而是尝试使用setter函数设置它们的属性。如果您想让其
如果不去看另一个班,我肯定什么都不能说。但我认为问题可能是由承包商造成的。我看到的是,您没有将任何值传递给构造函数,而是尝试使用setter函数设置它们的属性。如果您想让其他人分配它,只需执行以下操作:
class ItemToPurchase:
def __init__(self,itemName ='none',itemDescription = 'none',itemPrice =
0,itemQuantity = 0):
self.itemName = itemName
self.itemDescription = itemDescription
self.itemPrice = itemPrice
self.itemQuantity = itemQuantity
def setName(self,newName):
self.itemName = newName
def getName(self):
return self.itemName
def setPrice(self, newPrice):
self.itemPrice = newPrice
def getPrice(self):
return self.itemPrice
def setQuantity(self, newQuantity):
self.itemQuantity = newQuantity
def getQuantity(self):
return self.itemQuantity
def setDescription(self,description):
self.itemDescription = description
def getDescription(self):
return self.itemDescription
def printItemCost():
print(itemName+" "+itemQuantity+" @ $"+itemPrice+" =
"+itemPrice*itemQuantity)
def printItemDescription():
print(itemName+" "+itemDescription)
class ShoppingCart:
def __init__(self,customerName = 'none', currentDate = 'January 1, 2016'):
self.customerName = customerName
self.currentDate = currentDate
self.cartItems = []
def addItem(self, item):
self.cartItems.append(item)
def getDate(self):
return self.currentDate
def getCustomerName(self):
return self.customerName
for i in shoppingCart.cartItems:
print(i.getName())
使用这种模式分配其他用户键入的变量。
对于打印部分,请使用此选项
name = input("Enter name")
description = input("Enter description")
item = foo(name, description)
如果您有任何问题,请随时提问。希望有帮助:)
PS:当你更新时,我正在写我的答案。不过,我的回答仍然很重要。我想你把它弄得太复杂了。如果不看另一节课,我肯定什么也说不出来。但我认为问题可能是由承包商造成的。我看到的是,您没有将任何值传递给构造函数,而是尝试使用setter函数设置它们的属性。如果您想让其他人分配它,只需执行以下操作:
class ItemToPurchase:
def __init__(self,itemName ='none',itemDescription = 'none',itemPrice =
0,itemQuantity = 0):
self.itemName = itemName
self.itemDescription = itemDescription
self.itemPrice = itemPrice
self.itemQuantity = itemQuantity
def setName(self,newName):
self.itemName = newName
def getName(self):
return self.itemName
def setPrice(self, newPrice):
self.itemPrice = newPrice
def getPrice(self):
return self.itemPrice
def setQuantity(self, newQuantity):
self.itemQuantity = newQuantity
def getQuantity(self):
return self.itemQuantity
def setDescription(self,description):
self.itemDescription = description
def getDescription(self):
return self.itemDescription
def printItemCost():
print(itemName+" "+itemQuantity+" @ $"+itemPrice+" =
"+itemPrice*itemQuantity)
def printItemDescription():
print(itemName+" "+itemDescription)
class ShoppingCart:
def __init__(self,customerName = 'none', currentDate = 'January 1, 2016'):
self.customerName = customerName
self.currentDate = currentDate
self.cartItems = []
def addItem(self, item):
self.cartItems.append(item)
def getDate(self):
return self.currentDate
def getCustomerName(self):
return self.customerName
for i in shoppingCart.cartItems:
print(i.getName())
使用这种模式分配其他用户键入的变量。
对于打印部分,请使用此选项
name = input("Enter name")
description = input("Enter description")
item = foo(name, description)
如果您有任何问题,请随时提问。希望有帮助:)
PS:当你更新时,我正在写我的答案。不过,我的回答仍然很重要。我认为您把它复杂化了。您发布的代码有很多地方出错,但是打印项目的循环应该如下所示:
class ItemToPurchase:
def __init__(self,itemName ='none',itemDescription = 'none',itemPrice =
0,itemQuantity = 0):
self.itemName = itemName
self.itemDescription = itemDescription
self.itemPrice = itemPrice
self.itemQuantity = itemQuantity
def setName(self,newName):
self.itemName = newName
def getName(self):
return self.itemName
def setPrice(self, newPrice):
self.itemPrice = newPrice
def getPrice(self):
return self.itemPrice
def setQuantity(self, newQuantity):
self.itemQuantity = newQuantity
def getQuantity(self):
return self.itemQuantity
def setDescription(self,description):
self.itemDescription = description
def getDescription(self):
return self.itemDescription
def printItemCost():
print(itemName+" "+itemQuantity+" @ $"+itemPrice+" =
"+itemPrice*itemQuantity)
def printItemDescription():
print(itemName+" "+itemDescription)
class ShoppingCart:
def __init__(self,customerName = 'none', currentDate = 'January 1, 2016'):
self.customerName = customerName
self.currentDate = currentDate
self.cartItems = []
def addItem(self, item):
self.cartItems.append(item)
def getDate(self):
return self.currentDate
def getCustomerName(self):
return self.customerName
for i in shoppingCart.cartItems:
print(i.getName())
您发布的代码有很多错误,但是打印项目的循环应该如下所示:
class ItemToPurchase:
def __init__(self,itemName ='none',itemDescription = 'none',itemPrice =
0,itemQuantity = 0):
self.itemName = itemName
self.itemDescription = itemDescription
self.itemPrice = itemPrice
self.itemQuantity = itemQuantity
def setName(self,newName):
self.itemName = newName
def getName(self):
return self.itemName
def setPrice(self, newPrice):
self.itemPrice = newPrice
def getPrice(self):
return self.itemPrice
def setQuantity(self, newQuantity):
self.itemQuantity = newQuantity
def getQuantity(self):
return self.itemQuantity
def setDescription(self,description):
self.itemDescription = description
def getDescription(self):
return self.itemDescription
def printItemCost():
print(itemName+" "+itemQuantity+" @ $"+itemPrice+" =
"+itemPrice*itemQuantity)
def printItemDescription():
print(itemName+" "+itemDescription)
class ShoppingCart:
def __init__(self,customerName = 'none', currentDate = 'January 1, 2016'):
self.customerName = customerName
self.currentDate = currentDate
self.cartItems = []
def addItem(self, item):
self.cartItems.append(item)
def getDate(self):
return self.currentDate
def getCustomerName(self):
return self.customerName
for i in shoppingCart.cartItems:
print(i.getName())
代码的一个问题是在ItemToPurchase类中过度使用setter函数。最好用构造函数设置值?Java中的课程经常教导您需要为所有属性构建getter和setter,但这并不是最好的主意,而且会使代码过于臃肿。只有在绝对需要的情况下,才应该实现它们(在您的情况下,只需要更改itemQuantity,可能还需要更改优惠券的itemPrice之类的东西)。此外,在Python中,您可以返回所有ItemToPurchase属性的元组,而不是使用独立的getter:
for item in shoppingCart.cartItems:
print(item.getName())
然后,您不需要在主类/主函数中返回所有这些访问,您只需要分配到局部变量,并以这种方式构造ItemToPurchase。这样,类访问/函数调用就少了很多,更干净了
另一个问题是ShoppingCart是如何构造的。虽然Python并不完全具有“私有”属性,如Java或C++,但您可能希望在该类中的Sy-InITyjava中使CARTITEMs列表“私有”(MULD,但HEY,足够接近),并构建一个检索器:
def getAttributes(self):
return (self.itemName, self.itemDescription, self.itemPrice, self.itemQuantity)
然后,要恢复ShoppingCart中第一个ItemToPurchase的属性:
self.__cartItems = []
def getCartSize():
return len(self.__cartItems)
def getCartItem(pos):
return self.__cartItems[pos].getAttributes()
Python类和Java类之间最大的区别可能在于“private”的概念是如何实现的,以及Python返回语句的更大灵活性。代码中的一个问题是在ItemToPurchase类中过度使用setter函数。最好用构造函数设置值?Java中的课程经常教导您需要为所有属性构建getter和setter,但这并不是最好的主意,而且会使代码过于臃肿。只有在绝对需要的情况下,才应该实现它们(在您的情况下,只需要更改itemQuantity,可能还需要更改优惠券的itemPrice之类的东西)。此外,在Python中,您可以返回所有ItemToPurchase属性的元组,而不是使用独立的getter:
for item in shoppingCart.cartItems:
print(item.getName())
然后,您不需要在主类/主函数中返回所有这些访问,您只需要分配到局部变量,并以这种方式构造ItemToPurchase。这样,类访问/函数调用就少了很多,更干净了
另一个问题是ShoppingCart是如何构造的。虽然Python并不完全具有“私有”属性,如Java或C++,但您可能希望在该类中的Sy-InITyjava中使CARTITEMs列表“私有”(MULD,但HEY,足够接近),并构建一个检索器:
def getAttributes(self):
return (self.itemName, self.itemDescription, self.itemPrice, self.itemQuantity)
然后,要恢复ShoppingCart中第一个ItemToPurchase的属性:
self.__cartItems = []
def getCartSize():
return len(self.__cartItems)
def getCartItem(pos):
return self.__cartItems[pos].getAttributes()
Python类和Java类之间最大的区别可能在于“private”的概念是如何实现的,以及Python返回语句的更大灵活性。我们需要看到另一个类,因为它包含有问题的项目,以便帮助您。请提供刚刚更新的
ShoppingCart
code,谢谢你不会只在Java的类级别编写所有代码;为什么要用Python来做呢?虽然我真的不明白为什么你需要一个ShoppingCartPrinter类,而不仅仅是一个函数。尝试在Python中使用@property我们需要看到另一个类,因为它包含有问题的项目,以便帮助你。请提供刚刚更新的ShoppingCart
code,谢谢你不会只在Java的类级别编写所有代码;为什么要用Python来做呢?虽然我真的不明白为什么你需要一个ShoppingCartPrinter类,而不仅仅是一个函数。试着在pythonThank中使用@property作为你的输入!那么在python中,setter的使用是多余的吗?或者仅针对此场景?它不是多余的,您可以像在Java中一样使用它,但是对于这种类型的场景,当您在运行时分配属性时,这是不必要的。谢谢您的输入!那么在python中,setter的使用是多余的吗?或者仅仅针对这个场景?它不是多余的,您可以像在Java中一样使用它,但是对于这种类型的场景,当您在ru中分配属性时