首页 > 其他分享 >Mixins机制和元类

Mixins机制和元类

时间:2023-06-29 15:34:23浏览次数:35  
标签:交通工具 Vehicle Mixins 元类 pass 机制 type class

一、Mixins机制

Mixins机制是一种在面向对象编程中用于代码复用的灵活机制,通过将特定功能的代码块注入到类中,增强了类的功能,同时保持了类的层次结构的简洁性和灵活性。

案例:

定义一个交通工具类,民航飞机和直升飞机、汽车都属与交通工具,继承交通工具类。

但是汽车不会飞,将fly的方法从交通工具类中提出来,做一个新类。

民航飞机和直升飞机继承多个类,汽车只继承交通工具类

class Vehicle:  # 交通工具
    pass

class FlyMinix():
    def fly(self):
        '''
        飞行功能相应的代码
        '''
        print("I am flying")

"""
1. 主类:就是大部分都是主要的功能
2. 辅类:就是一些辅助的功能
3. 辅类的类名也有讲究:一般以mixin、able、ible等结尾
4. 继承的位置也有讲究
"""

class CivilAircraft(FlyMinix, Vehicle):  # 民航飞机
    pass

class Helicopter(FlyMinix, Vehicle):  # 直升飞机
    pass

class Car(Vehicle):  # 汽车并不会飞,但按照上述继承关系,汽车也能飞了
    pass

二、元类

1、什么是元类

产生类的类

2、查看元类type

class Vehicle:  # 交通工具
    pass

class Car(Vehicle):  # 汽车并不会飞,但按照上述继承关系,汽车也能飞了
    pass

qiche = Vehicle()
print(type(qiche))  # <class '__main__.Vehicle'>
print(type(Vehicle)) # <class 'type'>

3、产生类的两种方式

方式1:

 

class 类名():
    pass

方式2:
由于所有类都是有type类造出来的,所以我们也可以使用type类造出来一个新类

type(object_or_name, bases, dict)
# 这三个条件就是造出来类的三个要素.
type("类名", "父类", "类的名称空间")

4、

 

标签:交通工具,Vehicle,Mixins,元类,pass,机制,type,class
From: https://www.cnblogs.com/dgp-zjz/p/17514332.html

相关文章

  • Zookeeper投票机制
    每个sever首先给自己投票,然后用自己的选票和其他sever选票对比,权重大的胜出,使用权重较大的更新自身选票箱。具体选举过程如下:1.每个Server启动以后都询问其它的Server它要投票给谁。对于其他server的询问,server每次根据自己的状态都回复自己推荐的leader的id和上......
  • 深入类加载机制
    初识类加载过程使用某个类时,如果该类的class文件没有加载到内存时,则系统会通过以下三个步骤来对该类进行初始化1.类的加载(Load) → 2.类的连接(Link) → 3.类的初始化(Initialize)类的加载(Load):将类的class文件读入内存,并为之创建一个java.lang.Class的对象,此过程由类加载器(ClassLoader)......
  • kafka ack机制
    1kafka基本架构kafka的partion分为leader和follow。leader参与允许,二follower仅作为备份。那么,leader和follower之间是怎么同步的呢 2leader和follower的同步Partition只有Leader是对外提供读写服务的也就是说,如果有一个客户端往一个Partition写入数据,......
  • 创建型模式-单例模式(使用元类实现)
    #创建型模式-单例模式(使用元类实现)#线程锁:防止创建多个实例#双重检查:实例创建后,防止重复加锁占用资源#__call__作用:__call__方法使一个类的实例像方法一样调用,当我们调用一个实例时,实际就是调用了它的__call__方法importtimefromthreadingimportLockfromconcurrent.futu......
  • USB—CH32x作为USB设备时的通信机制和注意事项
    USB设备的数据交互机制围绕中断来展开核心机制:设备准备好状态和数据,主机下发命令,硬件根据寄存器的设置自动立即回复,然后进入相应中断 SETUP:SETUP必须回复ACK,主机收到设备的ACK,MCU进入对应的SETUP中断中断里,设备解析SETUP中的命令,然后准备相关的数据,设置对应的寄存器例如获取描......
  • JVM 类加载机制
    加载过程其中验证,准备,解析合称链接加载通过类的完全限定名,查找此类字节码文件,利用字节码文件创建Class对象.验证确保Class文件符合当前虚拟机的要求,不会危害到虚拟机自身安全.准备进行内存分配,为static修饰的类变量分配内存,并设置初始值(0或null).不包含final修饰的静态......
  • SpringBoot事件机制
    1、是什么?SpringBoot事件机制是指SpringBoot中的开发人员可以通过编写自定义事件来对应用程序进行事件处理。我们可以创建自己的事件类,并在应用程序中注册这些事件,当事件被触发时,可以对其进行处理。在SpringBoot中,事件可以是任意类型的,可以是基于Spring的事件,也可以是自定义的事......
  • 关于.net4.0使用WhenAny实现Task超时机制
    .net4.0想要使用await/async语法糖必须要引用:Microsoft.BclMicrosoft.Bcl.Async Microsoft.Bcl.Build可以从nuget引用此三个包publicstaticasyncTask<TResult>TryRunWithTimeoutAsync<TResult>(thisFunc<TResult>function,intdueTime){//......
  • caffe中的学习率的衰减机制
    根据 caffe/src/caffe/proto/caffe.proto里的文件,可以看到它有以下几种学习率的衰减速机制:1.fixed:  在训练过程中,学习率不变;2.step:  它的学习率的变化就像台价一样;stepbystep的;其中的 gamma 与 stepsize需要设置的;3.exp:表示指数型的,其中参数 gamma 需要设置......
  • 基于select机制的Socket服务端
    1、基于Select机制的服务端代码#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<arpa/inet.h>#include<sys/socket.h>#include<sys/time.h>#include<sys/select.h>#defineBUF_SIZ......