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/