# =========================== 面向对象 ============= # 引子 # 游戏公司 : 人狗大战 # 两个角色 类: 人 狗 # 人 : 名字 性别 攻击力 生命值hp 描述类 # 狗 : 名字 品种 攻击力 生命值 # def person(name,sex,aggr,hp): # 人模子 # person_dic = { # 'name': name, # 'sex' : sex, # 'aggr': aggr, # 'hp' : hp # } # def attack(dog): # dog['hp'] -= person_dic['aggr'] # print('%s打了%s,掉了%s血' % (person_dic['name'], dog['name'], person_dic['aggr'])) # person_dic['attack'] = attack # return person_dic # def dog(name,kind,aggr,hp): # 狗模子 # dog_dic = { # 'name' : name, # 'kind' : kind, # 'aggr' : aggr, # 'hp' : hp # } # def bite(person): # 安全 # person['hp'] -= dog_dic['aggr'] # print('%s咬了%s,掉了%s血' % (dog_dic['name'], # person['name'], # dog_dic['aggr'])) # dog_dic['bite'] = bite # return dog_dic # hei = dog('小黑','teddy',260,10000) # alex = person('alex','female',1,250) # egon = person('egon','male',2,500) # # dog 咬人 人掉血 # hei['bite'](alex) # egon['attack'](hei) # 面向对象的思想 # 人的字典 狗的字典 attack bite 又来了一个人 再创建一个人的字典 面向过程编程 # 类 : 一类事务 人类 狗类 # 对象 : 一个具体的事务 alex egon hei # 面向对象编程 : # ========= 面向对象 # class Person: # 类名 Person # role = '人' # 类的静态变量 是所有的对象共享的一个属性 # def attack(self):pass # print(Person.role) # 类提供给我们的调用方式 # print(Person.attack) # Person.role = '中国人' # print(Person.role) # Person.attack() # 报错 # print(Person.__dict__) # 存储方式 # print(Person.__dict__['role']) # print(Person.__dict__['attack']) # Person.__dict__['role'] = '人' # 类只有两个作用: # 1.使用类中的名字 # 查看类中的名字: # 类名.变量名 # 可以修改变量的值 # 类名.__dict__['变量名'] # 不能修改 # 2.创造对象 实例化对象 # 对象就是实例,一个实际的例子 # 对象 = 类名() # class Person: # 类名 Person # role = '人' # 类的静态变量 是所有的对象共享的一个属性 # def __init__(self,name,sex,aggr,hp): #{} # self.name = name # self.sex = sex # self.aggr = aggr # self.hp = hp # def attack(self): # print(self.name) # print(self.sex) # # obj1 = Person('alex','female',250,1) # obj2 = Person('egon','male',500,2) # print(obj1.name,obj1.sex,obj1.aggr,obj1.hp) # print(obj2.name,obj2.sex,obj2.aggr,obj2.hp) # print(obj1.__dict__) # print(obj2.__dict__) # print(obj1) # Person.attack(obj1) # 调用一个类中的方法了 # obj1.attack() # 对象的具体: # 内存地址的不一致 # 不同的对象 属性的值应该不同 # 类名(参数) # 创造一个空对象 : self # 调用__init__方法 : 初始化方法 # 把参数传给__init__方法 # 完成init方法中的代码 # 自动将self返回给实例化的地方 # self就是对象 # 调用类中的方法 : # 类名.方法名(对象) # 对象名.方法名() # class Person: # 类名 Person # role = '人' # 类的静态变量 是所有的对象共享的一个属性 # def attack(self):pass # print(Person.role) # 类提供给我们的调用方式 # print(Person.attack) # Person.role = '中国人' # print(Person.role) # Person.attack() # 报错 # print(Person.__dict__) # 存储方式 # print(Person.__dict__['role']) # print(Person.__dict__['attack']) # Person.__dict__['role'] = '人' # 类只有两个作用: # 1.使用类中的名字 # 查看类中的名字: # 类名.变量名 # 可以修改变量的值 # 类名.__dict__['变量名'] # 不能修改 # 2.创造对象 实例化对象 # 对象就是实例,一个实际的例子 # 对象 = 类名() # class Person: # 类名 Person # role = '人' # 类的静态变量 是所有的对象共享的一个属性 # def __init__(self,name,sex,aggr,hp): #{} # self.name = name # self.sex = sex # self.aggr = aggr # self.hp = hp # def attack(self): # print(self.name) # print(self.sex) # # obj1 = Person('alex','female',250,1) # obj2 = Person('egon','male',500,2) # print(obj1.name,obj1.sex,obj1.aggr,obj1.hp) # print(obj2.name,obj2.sex,obj2.aggr,obj2.hp) # print(obj1.__dict__) # print(obj2.__dict__) # print(obj1) # Person.attack(obj1) # 调用一个类中的方法了 # obj1.attack() # 对象的具体: # 内存地址的不一致 # 不同的对象 属性的值应该不同 # 类名(参数) # 创造一个空对象 : self # 调用__init__方法 : 初始化方法 # 把参数传给__init__方法 # 完成init方法中的代码 # 自动将self返回给实例化的地方 # self就是对象 # 调用类中的方法 : # 类名.方法名(对象) # 对象名.方法名()