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的血

  

原文地址:https://www.cnblogs.com/haowen980/p/8799021.html

时间: 2024-10-25 10:56:32

python全栈学习--Day18(面向对象交互)的相关文章

python全栈学习--Day19(面向对象组合,继承)

一.组合 表示的一种什么有什么的关系 先来说一下,__init__的作用 1 2 3 4 5 6 7 8 9 10 class Dog:     def __init__(self, name, kind, hp, ad):         self.name = name  # 对象属性 属性         self.kind = kind         self.hp = hp         self.ad = ad     def bite(self, p):         p.h

python全栈学习--面向对象进阶3

复习: #反射 必须会,必须能看的懂,必须知道在哪儿用 #hasattr  getattr setattr delattr 内置方法 必须能看懂 能用尽量用 __len__len(obj)的结果依赖于obj.__len()__的结果,计算对象的长度 __hash__ hash(obj)的结果依赖于obj.__hash__()的结果,结算对象的hash值 __eq__ obj1 == obj2 的结果依赖于obj.__eq__()的结果,用来判断相等 __str__ str(obj) print(

python全栈学习路线

查询目录 一,硬件                                                                    十一,数据库 二,Linux基础                                                           十二,前端 三,python基础                                                        十三,Django 四,python文件处理   

Python全栈学习:如何安装Python方法,详解!

因为Python是跨平台的,它可以运行在Windows.Mac和各种Linux/Unix系统上.在Windows上写Python程序,放到Linux上也是能够运行的. 要开始学习Python编程,首先就得把Python安装到你的电脑里.安装后,你会得到Python解释器(就是负责运行Python程序的),一个命令行交互环境,还有一个简单的集成开发环境. 安装Python 3.7 目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的.由于3.x版越来越普及,我们的教程

10、python全栈之路-面向对象进阶

十.面向对象进阶 http://www.cnblogs.com/Eva-J/articles/7351812.html 1.isinstance和issubclass 1.1 isinstance(obj,cls) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 1.2 issubclass(sub, super) issubclass(sub, super)检查sub类是否是 super 类的派生类 2.反射 #把一个字符串数据类型的变量变成一个真实存在在这个程序

python全栈学习--day4

列表 说明:列表是python中的基础数据类型之一,它是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如: 1 li = ['alex',123,Ture,(1,2,3,'wusir'),[1,2,3,'小明',],{'name':'alex'}] 列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据.列表是有序的,有索引值,可切片,方便取值. 索引,切片,步长 li = ['xiao',123,True,(1,2,3,'wusir'),[1,2,3,'小明',

python全栈开发 * 23 面向对象 知识点汇总 * 180704

23 面向对象 -----特殊方法 1. isinstance(obj,类名) 判断对象是否是此类实例化或者此类的子类实例化出来的class A:passclass B(A):passb1=B()print(isinstance(b1,B)) # Trueprint(isinstance(b1,A)) # True2.issubclass(类名,类名1) 判断类名是否是类名1的子类class A:passclass B(A):passprint(issubclass(B,A)) #Truepri

Python全栈开发之面向对象

No.1 概念 面向对象的特点? 注重对象和指责,不同的对象承担各自的指责 更加适合对复杂的需求变化,专门应对复杂项目开发,提供固定的套路 面向对象强调的是谁来做,面向过程强调的如何做 什么是类 类是对一群具有相同特征或者行为的事物统称,是抽象的,不能直接使用,特征被称为属性,行为被称为方法,类就是一个模板 什么是对象 对象是由类创建出来的一个具体存在,可以直接使用,通过哪个类创建出来的实例,就拥有哪个类中定义的特征和行为 类和对象的关系 类是模板,对象是根据类这个模板创建出来的,先有类,再有对

python全栈学习--day31(正则)

try: '''可能会出现异常的代码''' except ValueError: ''''打印一些提示或者处理的内容''' except NameError: '''...''' except Exception: '''万能异常不能乱用''' try: '''可能会出现异常的代码''' except ValueError: ''''打印一些提示或者处理的内容''' except NameError: '''...''' except Exception: '''万能异常不能乱用''' else