zoukankan      html  css  js  c++  java
  • 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的血
    

      

  • 相关阅读:
    Java描述设计模式(18):享元模式
    Java描述设计模式(17):调停者模式
    微服务架构案例(06):通过业务、应用、技术、存储方面,聊聊架构
    微服务架构案例(05):SpringCloud 基础组件应用设计
    微服务架构案例(04):中间件集成,公共服务封装
    微服务架构案例(03):数据库选型简介,业务数据规划设计
    微服务架构案例(02):业务架构设计,系统分层管理
    Java描述设计模式(16):代理模式
    讲解mybaits的标签语法
    java程序设计原则
  • 原文地址:https://www.cnblogs.com/haowen980/p/8799021.html
Copyright © 2011-2022 走看看