• 封装 继承 多态 派生 组合定义 && 对象之间交互


    此篇博客 主在阐述类的几大特性的定义

    1.定义

    组合:就是一个拥有一个属性,这个属性是另一个类,没有继承关系,旨在将两个类的功能组合起来,或者一个类想调用另一个类的功能

    继承:创建类的方式,被继承的类称为父类或基类,继承的类称为子类或派生类

    封装:封:存储名称空间私有属性不对外开放  只提供接口

    派生:指的是字类继承父类的方法和属性,并派生出自己独有的属性和方法 ,若字类中存在与父类相同的方法,则该方法为重写

    多态:一个事物有多种表现形式   

                1.多态的表现形式:继承类(不能改变父类的属性和方法也不能派生出新的方法)

                 2.继承抽象类    metaclass= abc.ABCMeta    @abc.abstarctmethod 

                 

    import abc
    class
    Animal(metaclass=abc.ABCMeta): # 方法 吃 @abc.abstractmethod def eat(self): pass

                 3.鸭子类型      python 崇尚鸭子类型   一般在公司中推崇鸭子类型

                    不同的对象,只要长得像鸭子,动作行为像鸭子,那它就是鸭子

                    开发过程中,不同的对象,先抽象出相同类型的方法,给他们定制一套统一的规范 ,所有的类在定义时都按照统一的规范进行编写

                     

    2.对象间的交互

    class Garen:        #定义英雄盖伦的类,不同的玩家可以用它实例出自己英雄;
        camp='Demacia'  #所有玩家的英雄(盖伦)的阵营都是Demacia;
        def __init__(self,nickname,aggressivity=58,life_value=455): #英雄的初始攻击力58...;
            self.nickname=nickname  #为自己的盖伦起个别名;
            self.aggressivity=aggressivity #英雄都有自己的攻击力;
            self.life_value=life_value #英雄都有自己的生命值;
        def attack(self,enemy):   #普通攻击技能,enemy是敌人;        attck方法传入对象
            enemy.life_value-=self.aggressivity #根据自己的攻击力,攻击敌人就减掉敌人的生命值。
    class Riven:
        camp='Noxus'  #所有玩家的英雄(锐雯)的阵营都是Noxus;
        def __init__(self,nickname,aggressivity=54,life_value=414): #英雄的初始攻击力54;
            self.nickname=nickname  #为自己的锐雯起个别名;
            self.aggressivity=aggressivity #英雄都有自己的攻击力;
            self.life_value=life_value #英雄都有自己的生命值;
        def attack(self,enemy):   #普通攻击技能,enemy是敌人;
            enemy.life_value-=self.aggressivity #根据自己的攻击力,攻击敌人就减掉敌人的生命值。 

    实例出俩英雄

    >>> g1=Garen('草丛伦')
    >>> r1=Riven('锐雯雯')

    交互

    >>> g1.life_value
    455
    >>> r1.attack(g1)
    >>> g1.life_value
    401 

              

           

  • 相关阅读:
    NPOI Word 多级标题结构设置
    ^M的问题解决
    sed命令详解
    Python time datetime string 相互转换
    Linux环境下调试python代码----pdb模块
    k8s更新证书记录
    sealos + NFS 部署 kubesphere 3.0
    使用wireshark排除一例网络问题
    Prometheus监控Oracle数据库
    记录一次清理挖矿病毒
  • 原文地址:https://www.cnblogs.com/bigbox/p/11936995.html
Copyright © 2020-2023  润新知