python基础--面向对象基础(类与对象、对象之间的交互和组合、面向对象的命名空间、面向对象的三大特性等) (4)

定义和调用的固有模式

class 类名: def __init__(self,参数1,参数2): self.对象的属性1 = 参数1 self.对象的属性2 = 参数2 def 方法名(self):pass def 方法名2(self):pass 对象名 = 类名(1,2) #对象就是实例,代表一个具体的东西 #类名() : 类名+括号就是实例化一个类,相当于调用了__init__方法 #括号里传参数,参数不需要传self,其他与init中的形参一一对应 #结果返回一个对象 对象名.对象的属性1 #查看对象的属性,直接用 对象名.属性名 即可 对象名.方法名() #调用类中的方法,直接用 对象名.方法名() 即可 类名.静态属性(静态变量)

(3)对象之间的交互(注重在行为)

我们这里来一个类的例子,实现对象之间的交互。

class Person(): # Person 类名 def __init__(self, name, sex, job, level, hp, weapon, ad): self.name = name # 对象属性/实例变量 self.sex = sex self.job = job self.level = level self.hp = hp self.weapon = weapon self.ad = ad def cuo(self, dog): dog.hp -= self.ad print(\'%s 攻击了 %s,%s掉了%s点血\' % (self.name, dog.dog_name, dog.dog_name, self.ad)) class Dog(): # Dog 类名 def __init__(self, name, blood, aggr, kind): self.dog_name = name self.hp = blood self.ad = aggr self.kind = kind def tiao(self, person): person.hp -= self.ad print(\'%s 攻击了 %s,%s掉了%s点血\' % (self.dog_name, person.name, person.name, self.ad)) zhouqian = Person(\'zhouqian\', \'不详\', \'搓澡工\', 0, 250, \'搓澡巾\', 1) # 对象\实例 类名()---》实例化过程 littleDog = Dog(\'小白\', 5000, 249, \'萨摩耶\') littleDog1 = Dog(\'小金\', 6000, 266, \'金毛\') zhouqian.cuo(littleDog) zhouqian.cuo(littleDog1) littleDog.tiao(zhouqian) littleDog1.tiao(zhouqian) \'\'\' 输出的结果为: zhouqian 攻击了 小白,小白掉了1点血 zhouqian 攻击了 小金,小金掉了1点血 小白 攻击了 zhouqian,zhouqian掉了249点血 小金 攻击了 zhouqian,zhouqian掉了266点血 \'\'\'

接下来我们用对象的交互实现一个简单的小游戏

定义一个人类

class Person: # 定义一个人类 role = \'person\' # 人的角色属性都是人 def __init__(self, name, aggressivity, life_value, money): self.name = name # 每一个角色都有自己的昵称; self.aggressivity = aggressivity # 每一个角色都有自己的攻击力; self.life_value = life_value # 每一个角色都有自己的生命值; self.money = money def attack(self,dog): # 人可以攻击狗,这里的狗也是一个对象。 # 人攻击狗,那么狗的生命值就会根据人的攻击力而下降 dog.life_value -= self.aggressivity

定义一个狗类

class Dog: # 定义一个狗类 role = \'dog\' # 狗的角色属性都是狗 def __init__(self, name, breed, aggressivity, life_value): self.name = name # 每一只狗都有自己的昵称; self.breed = breed # 每一只狗都有自己的品种; self.aggressivity = aggressivity # 每一只狗都有自己的攻击力; self.life_value = life_value # 每一只狗都有自己的生命值; def bite(self,people): # 狗可以咬人,这里的狗也是一个对象。 # 狗咬人,那么人的生命值就会根据狗的攻击力而下降 people.life_value -= self.aggressivity

接下来,又创建一个新的兵器类。

class Weapon: def __init__(self,name, price, aggrev, life_value): self.name = name self.price = price self.aggrev = aggrev self.life_value = life_value def update(self, obj): #obj就是要带这个装备的人 obj.money -= self.price # 用这个武器的人花钱买所以对应的钱要减少 obj.aggressivity += self.aggrev # 带上这个装备可以让人增加攻击 obj.life_value += self.life_value # 带上这个装备可以让人增加生命值 def prick(self, obj): # 这是该装备的主动技能,扎死对方 obj.life_value -= 500 # 假设攻击力是500

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwdxxf.html