python之面向对象的交互

对象之间的交互

我们新建一个猫类,通过给猫一些具体的属性我们就可以拿到一个实实在在的猫。现在我们要再创建一个狗类,狗就不能打猫了,只能咬猫,所以我们给狗想一个方法。
有了狗类,我们还要实例化一只实实在在的狗出来。然后猫和狗就可以打架了。现在我们就来让它们打一架吧!

class cat:  # 定义一只猫
    role = 'cat'  # 属性还是猫

    def __init__(self, name, aggressivity, life_value):
        self.name = name  # 每一个猫都有自己的昵称;
        self.aggressivity = aggressivity  # 每一个猫都有自己的攻击力;
        self.life_value = life_value  # 每一个猫都有自己的生命值;

    def attack(self,dog):  
        # 猫可以攻击狗,这里的狗也是一个对象。
        # 猫攻击狗,那么狗的生命值就会根据人的攻击力而下降
        dog.life_value -= self.aggressivit

 

 

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,cat):
        # 狗可以咬猫,这里的狗也是一个对象。
        # 狗咬猫,那么猫的生命值就会根据狗的攻击力而下降
     dog.life_value -= self.aggressivit

 

实例化一只实实在在的二哈

erha = Dog('二愣子','哈士奇',10,1000)  #创造了一只实实在在的二哈:erha

交互 egon打erha一下

print(erha.life_value)         #看看erha的生命值
egg.attack(erha)               #egg打了erha一下
print(erha.life_value)         #erha掉了10点血

类的属性

创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性

而类有两种属性:静态属性和动态属性

  • 静态属性就是直接在类中定义的变量
  • 动态属性就是定义在类中的方法

其中类的数据属性是共享给所有对象的

>>>id(egg.role)
4341594072
>>>id(cat.role)
4341594072

而类的动态属性是绑定到所有对象的

创建一个对象/实例就会创建一个对象/实例的名称空间,存放对象/实例的名字,称为对象/实例的属性

 

posted @ 2019-10-17 20:28  遇事不决,可问清风  阅读(320)  评论(0编辑  收藏  举报