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