python全栈学习--Day18(面向对象交互)
Posted 鎵譹_John
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python全栈学习--Day18(面向对象交互)相关的知识,希望对你有一定的参考价值。
一、对象之间的交互
现在我们已经有了一个人类了,在通过人类一些具体的属性我们就可以那到一个实实在在的人。
现在我们要在创建一个狗类,狗就不能打人了。只能咬人,所以我们给狗一个bite方法。
有了狗类,我们还要实例化一只是实实在在的狗出来。
然后人和狗就可以打架了。现在我们就来让他们打一架吧!
创建一个狗类
class Person: role = \'person\' #静态属性 def __init__(self,name,sex,hp,ad): self.name = name self.sex = sex self.hp = hp self.ad = ad def attack(self): print(\'%s发起了一次攻击\'%self.name) class Dog: role = \'person\' #静态属性 def __init__(self,name, kind, hp, ad): self.name = name self.kind = kind self.hp = hp self.ad = ad def bite(self): print(\'%s咬了人一口\'%self.name) alex = Person(\'a_alex\',\'不祥\',1,5) boos_jin = Person(\'金老板\',\'女\',20,50) teddy = Dog(\'笨笨\',\'teddy\',50,10) alex.attack() #相当于执行Person.attack(alex) boos_jin.attack() #相当于执行Person.attack(boss_jin) teddy.bite()
执行输出:
a_sb发起了一次攻击
金老板发起了一次攻击
笨笨咬了人一口
那么问题来了,人发起了一次攻击,他攻击了谁?
交互 teddy打alex一下
class Person: role = \'person\' # 静态属性 def __init__(self, name, sex, hp, ad): self.name = name # 对象属性 属性 self.sex = sex self.hp = hp self.ad = ad def attack(self): print(\'%s发起了一次攻击\' % self.name) class Dog: role = \'person\' # 静态属性 def __init__(self, name, kind, hp, ad): self.name = name # 对象属性 属性 self.kind = kind self.hp = hp self.ad = ad def bite(self, people): # people是变量名,它是一个对象 people.hp -= self.ad # 人掉血 print(\'%s咬了%s一口,%s掉了%s点血\' % (self.name, people.name, people.name, self.ad)) # 由于people是对象,取name就是people.name alex = Person(\'a_sb\', \'不详\', 1, 5) boss_jin = Person(\'金老板\', \'女\', 20, 50) teddy = Dog(\'笨笨\', \'teddy\', 50, 10) teddy.bite(alex) # alex是一个对象,把对象传进去了 print(alex.hp) # 查看alex的血
以上是关于python全栈学习--Day18(面向对象交互)的主要内容,如果未能解决你的问题,请参考以下文章