Python在一个类中分组属性
问题描述:
假设我有一个类“shoppingCart”。我在购物车中添加物品:鸡蛋,牛奶,奶酪,面包,牙刷,培根,洗洁精,薯片和瓶装水。Python在一个类中分组属性
class shoppingCart(object):
def __init__(self):
self.eggs = 12
self.milk = 2
self.cheese = 1
self.bread = 0
self.toothbrush = 1
self.bacon = 10
self.soap = 1
self.chips = 2
self.bottlewater = 24
myCart = shoppingCart()
是否有可能在类中创建一个组,这样我就可以找出我的购物车落入特定类别的项目数?例如,如果我想要调用所有属于饮料(牛奶,水)或所有非食物(牙刷,肥皂)或美味的东西(奶酪,培根,薯片)的属性 - 怎么可能我去做那件事?
答
你不应该这样做只有一个类。 我会创建两个clases。一个是购物车,另一个是购物车。例如:
class cartItem(object):
def __init__(self, amount=0):
self.amount = amount
self._is_beverage = False
@property
def is_beverage(self):
return self._is_beverage
@is_beverage.setter
def is_beverage(self, value):
self._is_beverage = value
然后购物车:
class shoppingCart(object):
def __init__(self):
self._cart_items = []
@property
def cart_items(self):
return self._cart_items
@cart_items.setter
def cart_items(self, value):
self._cart_items = value
def append_cart_item(self, new_cart_item):
self._cart_items = self._cart_items.append(new_cart_item)
所以,你会怎么做:
myCart = shoppingCart()
milk = cartItem(amount=10)
milk.is_beverage = True
coke = cartItem(amount=2)
milk.is_beverage = True
myCart.cart_items = [milk, coke]
chips = CartItem(amount=20)
chips.is_beverage = False
myCart.append_cart_item(chips)
我甚至会作出一个具体的类每车项目类型(I稍后可能会改进该示例)。 我建议您进一步了解课程和小类,例如:http://www.jesshamrick.com/2011/05/18/an-introduction-to-classes-and-inheritance-in-python/