Python笔记--类与对象

对象

Python中的任何一条数据都是对象。每个对象都由三部分组成:标识、类型和值。对象的标识代表对象在内存中的存储位置,

对象的类型说明了它拥有的数据和值的类型。

dir

可以列举一个对象的所有属性和方法。

>>> fridge = {"cheese":1, "tomato":2, "milk":4}
>>> dir(fridge)
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '_
_init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__setattr__', '__setitem__', '__sizeof__', '
__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

 

类中允许定义对象,将它们封装到一个空间中。

对象提供给外界使用的方法叫做它的接口,这些方法是对象之外的程序使用该对象的途径。对象通过提供接口变得实用。

接口是使对象变得可用的任何方法和名称。

定义类。

class Fridge:
    def __init__(self, items={}):  # self指调用时的类的实例
        if type(items) != type({}):
            raise TypeError("Fridge requires a dictionary but was given %s" %type(items))
        self.items = items
        return

    def _add_multi(self, food_name, quantity):
        """
        add more than one of a food item
        :param food_name: 食物名
        :param quantity: 数量
        :return:
        """
        if food_name not in self.items:  # 如果没有该食物,建立类别,初始数量0
            self.items[food_name] = 0
        self.items[food_name] = self.items[food_name] + quantity

    def add_one(self, food_name):
        """

        :param food_name: 食物名称
        :return: 添加成功返回True
        """
        if type(food_name) != type(""):
            raise TypeError("add_one requires a string, given a %s" % type(food_name))
        else:
            self._add_multi(food_name, 1)
        return True

    def add_many(self, food_dict):
        """
        add many food
        :param food_dict:
        :return:
        """
        if type(food_dict) != type({}):
            raise TypeError("add_many requires a string, given a %s" % type(food_dict))
        for item in food_dict.keys():
            self._add_multi(item, food_dict[item])
        return

    def has_Various(self, foods):
        try:
            for food in foods.keys():
                if self.items[food] < foods[food]:
                    return False
            return True
        except KeyError:
            return False

    def has(self, food_name, quantity=1):
        return self.has_Various({food_name: quantity})

def main():
    f = Fridge({"eggs": 6, "milk": 4, "cheese": 3})
    f.add_one("grape")
    print(f.items)
    f.add_many({"mushroom": 5, "tomato": 3})
    print(f.items)
    if f.has("eggs", 1):
        print("has egg")

if __name__ == '__main__':
    main()

输出

{'eggs': 6, 'milk': 4, 'cheese': 3, 'grape': 1}
{'eggs': 6, 'milk': 4, 'cheese': 3, 'grape': 1, 'mushroom': 5, 'tomato': 3}
has egg

 

posted @ 2021-08-24 20:34  奋斗的小仔  阅读(50)  评论(0编辑  收藏  举报