首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

基类、扩展类──页面重构中的模块化设计(五)

基类、扩展类──页面重构中的模块化设计(五) 由 Ghostzhang 发表于 2010-06-11 19:24 基类 和 扩展类 是这个系列的主要内容,上一篇《 模块化的核心思想──页面重构中的模块化设计...也就是说,当出现多个类似的模块时,基类包含了这些模块的大部分的效果(或者理解为公共的部分),在基类的基础上,我们可以通过添加很少的代码——扩展类,来达到所需要要效果。...当然前提是这两个模块有能找到类似的点,能够形成基类。 在这两个模块中,我们不难看出,A模块和B模块在信息的部分是很类似的,虽然B模块的列表不需要A模块的评论部分,但这并不影响B模块的表现。...另个,以哪个为基类呢?从满足大部分效果这个要求来看,很明显A模块做为基类是要比B模块做为基类更合适的,如果用B模块做基类,那么需要写更多的扩展类来满足A的需要。...另外还有一个重要的点,之所以选择A模块为基类,是因为A在栏目中被更多的页面使用。

72850
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python中的接口协议和抽象基类

    比如Sequence的正式接口如下图所示: 这些都叫做Python接口。事实上,Python每个类都有接口,除了抽象基类。...猴子补丁 我们可以通过猴子补丁来进一步认识,Python中协议的约定是怎么回事。猴子补丁是这样一种技术:在运行时修改类或模块,而不改动源码。...抽象基类 Python的抽象基类是指必须让继承它的子类去实现它所要求的方法的类。...Python的collections.abc模块中就定义了很多抽象基类: 虽然我们在实际编程中并不会自己编写抽象基类(一般也不建议这样做,因为可能会导致意想不到的问题),但是了解抽象基类,可以帮助我们更好理解...Python不会检查虚拟子类是否实现了抽象基类要求实现的方法,而是由我们自己保证,并捕获异常。具体会在下篇文章《Python抽象基类的定义与使用》进行介绍。

    1.9K30

    python的抽象基类

    与jvm上的语言不一样,python的语言没有interface关键字,而且除了抽象基类,每个类都有相应的接口:类实现或继承的公开属性(方法或数据类型) 在定义里,受保护的属性和私有属性不在接口中:即便...__setitem__ = setitem shuffle(a) 9 19 10 setitem的参数的名只是约定一样,只不过python会往里面传参数,类的方法本质上也只是一个函数而已。...我们可以在test1已经实例化后,再设置__setitem__,在运行时修改类和模块,而不改动源码,这就是所谓的“猴子补丁”。...继承抽象基类很简单,只要实现python里的特殊方法__len__之类的,这样python就会自动识别。 抽象基类的继承大多都是在collections模块,现在打开这个模块的文档看看。...,一共有16个基类,分为三层: --顶层是Iterable,Container,Sized,Callable,Hashable: 其中Iterable,Container,Sized是各个集合该继承的三个抽象基类

    89610

    Python中的协议 、鸭子类型 、 抽象基类 、混入类

    本篇文章探讨一下python中的几个概念:协议 、鸭子类型 、 抽象基类 、混入类。 一、协议 在python中,协议是一个或一组方法。...三、抽象基类 抽象基类就是定义各种方法而不做具体实现的类,任何继承自抽象基类的类必须实现这些方法,否则无法实例化。 那么抽象基类这样实现的目的是什么呢? 假设我们在写一个关于动物的代码。...Dog和Bird在实例化之后调用相同的方法,但是却有不同的输出,这就是最简单的抽象基类的用法。...注意,自己定义的抽象基类要继承 abc.ABC(abc.ABC 是 Python 3.4 新增的类,python2的语法不是这样的)。...混入类应该提供某方面的特定行为,只实现少量关系非常紧密的方法并且混入类绝对不能实例化。 在 Python 中没有把类声明为混入的正规方式,所以强烈推荐在名称中加入 ...Mixin 后缀。

    1.9K20

    Python之抽象基类建议收藏

    大家好,又见面了,我是全栈君 抽象基类的核心定义在abc模块中,模块中包括了创建抽象基类需要的修饰符和元类型 abc.ABCMeta 用来生成抽象基础类的元类。由它生成的类可以被直接继承。...register方法  class Monkey: def __init__(self):      #不会出现在类的__mro__,所以不会通过super()方法调用基类方法...当没有实现抽象方法时,实例化时候不会报错,只有在调用时候才会报错。 继承方法   直接从抽象基类派生子类有一个好处,除非子类实现抽象基类的抽象方法,否则子类不能实例化。...中的抽象基类   collections.abc.Callable   collections.abc.Iterator   collections.abc.Mapping   numbers   以上为...Python提供的常用抽象基类,若要了解各抽象基类的相关信息,请参考具体的文档 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/120189.html原文链接:https

    66120

    Python 抽象基类 ABC :从实践到优雅

    今天我们来聊聊 Python 中的抽象基类(Abstract Base Class,简称 ABC)。...虽然这个概念在 Python 中已经存在很久了,但在日常开发中,很多人可能用得并不多,或者用得不够优雅。...代码检查工具的配合主流的 Python 代码检查工具(pylint、flake8)都对抽象基类提供了良好的支持。...Python 中,有两种方式定义抽象基类:# 方式 1:直接继承 ABCfrom abc import ABC, abstractmethodclass FileHandler(ABC): @abstractmethod...在文档字符串中清晰地说明方法的预期行为和返回值。通过这个实例,我们可以看到抽象基类如何帮助我们写出更加健壮和优雅的 Python 代码。它不仅能够捕获接口违规,还能提供更好的代码提示和文档支持。

    12700

    在Kubernetes集群中扩展CoreDNS

    用于调整Kubernetes集群中的CoreDNS资源/需求的指南 Chris O'Haver 我正在分享在Kubernetes(1.12)中使用CoreDNS(1.2.5)运行的一些测试结果,以便为将...除了在默认配置中测试CoreDNS之外,我还测试了CoreDNS并启用了可选的autopath插件。...这些测试在启用autopath时量化了内存/性能交易。 本文中的指南和公式基于GCE中的一组集群测试,您的环境可能会有所不同。...内存和Pod 在大规模Kubernetes集群中,CoreDNS的内存使用率主要受集群中Pod和服务数量的影响。 ?...使用autopath插件 CoreDNS中的autopath插件是一个减轻ClusterFirst搜索列表惩罚的选项。启用后,它会减少客户端在查找外部名称时进行的DNS查询次数。

    2.2K30

    【Groovy】Groovy 扩展方法 ( 静态扩展方法配置 | 扩展方法示例 | 编译静态扩展类 | 打包静态扩展类字节码到 jar 包中 | 测试使用 Thread 静态扩展类 )

    文章目录 一、扩展方法示例 二、静态扩展方法配置 三、编译静态扩展类 四、打包静态扩展类字节码到 jar 包中 五、测试使用 Thread 静态扩展类 一、扩展方法示例 ---- 为 Thread 扩展...hello 方法 , 在该方法中传入 Closure 参数 , 在该方法中 , 执行传入的闭包参数 ; class ThreadExt { public static Thread hello..., extensionClasses 用于配置 实例扩展方法 ; 这里配置的是 静态扩展方法 ; 配置完成后的项目结构如下 : 三、编译静态扩展类 ---- 在 Terminal 面板中 , 执行...源码到 classes 目录中 ; 其中 ThreadExt.groovy 中定义了 Thread 类的扩展方法 ; 编译过程及结果如下 : 四、打包静态扩展类字节码到 jar 包中 ---- 在...命令 , 将 classes 中的字节码文件按照 manifest/ 规则 , 打包到 thread.jar 文件中 ; 五、测试使用 Thread 静态扩展类 ---- 创建一个 Groovy 脚本

    1.1K20

    【python高级】元类在测试框架中的运用

    书接上回【python高级】元类的认识和基础用法 我们知道了元类的基本用法,也写了一个小demo,接下来我们就尝试运用进我们测试框架。 #一款无需编码且易用于二次开发的接口测试框架。...(字符串类型) - bases : 继承类的基类元组(或包含基类的元类)。(元组类型) - dict : 类属性和方法。...定义元类MyMateClass: 重写__new__方法,在创建新类时动态添加测试方法。 遍历attrs['Cases']中的测试用例数据。...通过调用getattr函数获取基类BaseApiCase中的测试方法perform。...在该方法中,打印了测试用例数据,并且可以进行数据处理、接口请求、响应数据提取和断言等操作。 在__main__中运行测试用例: 通过open函数打开测试用例数据文件,并加载JSON数据。

    14830

    C++中基类私有成员会被继承吗

    1.派生类间接访问基类私有成员 在类的继承中,类的私有成员在派生类中是“不可见“的,这种”不可见“是指在派生类的成员函数中,或者通过派生类的对象(指针,引用)不能直接访问它们。...在派生类还是能够通过调用基类的共有函数的方式来间接地访问基类的私有成员,包括私有成员变量和私有成员函数。考察如下程序。...B中,由于基类A的成员变量i和成员函数privateFunc()都是私有的,所以在类B的成员函数中无法直接访问到它们。...()就可以简介访问基类A中的私有成员。...综上所述,类的私有成员一定存在,也一定被继承到派生类中,从大小也可以看出派生类包含了基类的私有成员,读者可自行考证。只不过收到C++语法的限制,在派生类中访问基类的私有成员只能通过间接的方式进行。

    2.4K20

    派生类对基类中虚函数和非虚函数的继承效果

    “强制实现”,也就是只要是父类指针调用普通函数,那就是父类的普通函数 而虚函数的作用,主要是为了让父类指针可以调用子类的函数,这种是在运行时才决定调用哪个函数 1、虚函数:   C++的虚函数主要作用是...子类可以重写父类的虚函数实现子类的特殊化。 2、纯虚函数:   C++中包含纯虚函数的类,被称为是“抽象类”。抽象类不能使用new出对象,只有实现了这个纯虚函数的子类才能new出对象。   ...C++中的纯虚函数更像是“只提供申明,没有实现”,是对子类的约束,是“接口继承”。   C++中的纯虚函数也是一种“运行时多态”。...3、普通函数:   普通函数是静态编译的,没有运行时多态,只会根据指针或引用的“字面值”类对象,调用自己的普通函数。   普通函数是父类为子类提供的“强制实现”。   ...因此,在继承关系中,子类不应该重写父类的普通函数,因为函数的调用至于类对象的字面值有关。 参考链接

    9210
    领券