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
而类的动态属性是绑定到所有对象的
创建一个对象/实例就会创建一个对象/实例的名称空间,存放对象/实例的名字,称为对象/实例的属性
从前不会回头,往后不会将就