1 # 类 2 # 包含属性和方法 3 # 属性包括实例变量和类变量 4 # 什么时候用到类变量: 中国人->国籍 5 # 私有属性: __name 6 # 方法: 7 # 构造方法 8 # 析构方法: 析构函数不管写不写都会执行 写相当于重构 不写:本身就有一个析构方法 9 # 对象 10 # 实例化一个类之后得到的对象 11 # 封装 12 # 把一些功能的实现细节不对外暴露 13 # 继承 实现关联和重用 14 # 代码的重用 15 # 单继承: 16 # 多继承: 17 # 2.7 经典类 深度优先搜索 新式类 广度优先 18 # 3.0 都是广度优先搜索 19 # 写成新式类 20 # 继承父类时 使用super写法: super(子类名称, self).__init__(父类的变量) #多继承时体现优势 21 # 多态 22 # 一种接口 多种实现 #animal基类 拓展猫狗等动物 23 # 组合的方式实现关联和重用: 24 # self.person = Person(self.obj) #在类的init构造方法中直接实例化一个类来组合拓展 或者直接传入某对象 25 26 27 # 静态方法 28 # 只是名义上归类管理 实际上在静态方法里访问不了类或者类中的属性 29 # @staticmethod # 静态方法实际上和类没什么关系了,截断了和类之间的关联,只是类下面的一个参数; 和类之间的关系就是 要通过类名来调用 类的工具包 30 # @classmethod #类方法只能访问类变量不能访问实例变量 31 # @property #属性方法 把一个方法变成一个静态属性 32 ''' 33 #静态方法 34 class Dog(object): 35 def __init__(self, name): 36 self.name = name 37 38 @staticmethod # 静态方法实际上和类没什么关系了,截断了和类之间的关联,只是类下面的一个参数; 和类之间的关系就是 要通过类名来调用 39 #类的工具包 40 def eat(self, food): 41 print("%s is eating %s" %(self.name, food)) 42 43 44 d = Dog("LL") 45 d.eat("包子") 46 ''' 47 ''' 48 #类方法 49 class Dog(object): 50 n = 333 51 def __init__(self, name): 52 self.name = name 53 self.n = 444 54 55 @classmethod #类方法只能访问类变量不能访问实例变量 56 def eat(self, food): 57 print("%s is eating %s" %(self.n, food)) 58 59 60 d = Dog("LL") 61 d.eat("包子") 62 ''' 63 #属性方法 64 class Dog(object): 65 def __init__(self, name): 66 self.name = name 67 self.__food = None 68 69 @property #属性方法 把一个方法变成一个静态属性 70 def eat(self): 71 print("%s is eating %s" %(self.name, self.__food)) 72 @eat.setter #给属性方法赋值 要写在属性方法的下面 73 def eat(self, food): 74 print("set food:", food) 75 self.__food = food 76 @eat.deleter #给属性方法删除值 77 def eat(self): 78 del self.__food 79 print("删完了") 80 81 d = Dog("LL") 82 d.eat 83 d.eat = "米田共" 84 d.eat 85 86 # del d.name #name属性被删除 87 # d.eat 88 89 # del d.eat #属性方法删除 90 # d.eat