封装 继承 多态 派生 组合定义 && 对象之间交互
此篇博客 主在阐述类的几大特性的定义
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