2016-07-05 5 views
0

Предположим, что у меня есть класс «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() 

Можно ли создать группу в классе, так что я мог бы определить количество элементов в моей корзине, которые попадают в определенную категорию? Например, если бы я хотел назвать все атрибуты, которые являются напитками (молоко, вода), или все вещи, которые являются непродовольственными (зубная щетка, мыло), или что-то вкусное (сыр, бекон, чипсы) - как можно Я продолжаю это делать?

ответ

1

Вы не должны делать это только с одним классом. Я бы создал две кладки. Один из них был бы элементом корзины, а другой - корзиной покупок. Например:

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/

Смежные вопросы