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

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

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 

          

       

原文地址:https://www.cnblogs.com/bigbox/p/11936995.html