`

python 抽象基类

 
阅读更多

#!coding=utf-8

#-------------------------------------------------------------------------------
# Name:        抽象基类
# Purpose:
#
# Author:      Mr Cheung
#
# Created:     02/08/2013
# Copyright:   (c) Mr Cheung 2013
# Licence:     <your licence>
#-------------------------------------------------------------------------------

"""
定义抽象类,需要使用abc模块,该模块定义了一个元类(ABCMeata),和装饰器 @abstractmethod, @abstractproperty

如果要实例化继承了Foo 的子类,子类必须实现了Foo所有的抽象方法(跟java一样),否则实例化报错。

抽象类不能直接实例化


"""

from abc import ABCMeta, abstractmethod, abstractproperty

class Foo:
    __metaclass__ = ABCMeta

    @abstractmethod               #在python3.0中 使用 class Foo(metaclass=ABCMeta)语法
    def spam(self, a, b):
        pass

    @abstractproperty
    def name(self):
        pass


class Bar(Foo):
    def spam(self, a, b):
        print a, b

   
    def name():
        pass

b = Bar()
b.spam(1,2)

 

 


"""
抽象基类支持对已经存在的类进行注册,使其属于该基类,使用register()方法

向抽象基类注册某个类,对于注册类中的实例,涉及后续基类的类检测操作比如(isinstance, issubclass) 将返回True
,向抽象基类注册某个类时,不会检查该类是否实现了任何抽象方法或特性,这种注册过程只会影响类型检查
"""

class Crok(object):
    def spam(self, a, c):
        print "gork.span"

Foo.register(Grok)

 

分享到:
评论

相关推荐

    python 抽象基类

    python 抽象基类

    python抽象基类用法实例分析

    ### Python抽象基类用法详解 #### 一、引言 在面向对象编程中,抽象基类(Abstract Base Class,简称ABC)是一种重要的概念。它主要用于定义一组接口规范,为子类提供统一的行为规范,而自身并不实现这些行为的...

    python 接口_从协议到抽象基类详解

    ### Python 接口_从协议到抽象基类详解 在探讨Python中的接口概念时,我们需要先理解几个核心概念:协议、抽象基类及其在实际编程中的应用。本篇内容将详细解析这些概念,并通过示例代码帮助读者更好地理解。 ####...

    接口:从协议到抽象基类1

    在Python编程语言中,接口和协议是描述对象行为的关键概念,虽然Python没有像其他语言那样直接提供`interface`关键字,但这些概念仍然可以通过抽象基类(Abstract Base Classes, ABCs)来实现。Python的文化鼓励使用...

    python抽象(2)

    在这个主题“Python抽象(2)”中,我们将深入探讨这一概念,以及如何在实际代码中应用抽象。 首先,抽象在Python中主要通过类(class)和接口(interface)来实现。类是创建对象的蓝图,它定义了对象的属性...

    Python 模块学习abc模块抽象类.docx

    本文将深入探讨Python中的抽象基类(Abstract Base Classes, ABCs)以及如何使用`abc`模块来创建它们。 1. 抽象类概念 抽象类是一种特殊的类,它不用于实例化,而是作为其他类的基类,提供了一组必须由子类实现的...

    Python面向对象编程:私有成员,保护成员和普通成员;抽象基类与继承

    一、基本概念 私有成员变量: __foo: 双下划线的表示的是私有类型(private)的变量, ... 抽象基类:该类的方法均为抽象方法,不能被实例化。子类需实现所有抽象方法,不然子类也是抽象类 方法重写:如果从父类继承的

    Python如何定义接口和抽象类

    Python提供了一个名为`abc`(Abstract Base Classes)的模块来支持抽象基类的概念。通过这个模块,我们可以定义抽象类和接口。 ##### 2.1 抽象基类定义示例 ```python from abc import ABCMeta, abstractmethod ...

    python继承和抽象类的实现方法

    在Python 2.6及以上版本中,我们可以使用 `abc` 模块来定义抽象基类。虽然在这个例子中没有明确地使用 `abc` 模块,但 `Employee` 类的行为表现得像一个抽象类,因为它包含了一个未实现的方法 `earnings`,并且在...

    python复习题资料

    * 在动物园管理系统中,我们定义了一个抽象基类Animal,它包含抽象方法make_sound和普通方法get_name。这种设计方式体现了面向对象编程的思想, Animal类提供了一个公共接口,使得子类可以继承和实现自己的方法。 * ...

    Python基础编程与实践教案第二十六课时Python面向对象编程(下).doc

    在Python中,可以使用`abc`模块来创建抽象基类。子类必须实现所有抽象方法,否则也会被视为抽象类。 3. **多态**:多态是指父类引用可以指向子类对象,允许子类对象执行父类定义的方法,而表现出不同的行为。这样,...

    继承的优缺点1

    2. 抽象基类:在Python中,使用`abc`模块可以定义抽象基类,这些类用于声明接口,子类必须实现这些接口的方法,否则将无法实例化。抽象基类有助于构建清晰的API和强制执行编程规范。 3. 混入(Mixins):混入类是...

    TDA-Python:Python的抽象结构

    【描述】"Python的抽象结构"这部分可能涉及到Python语言中的各种高级概念,如面向对象编程、模块化设计、类与对象的关系、抽象基类(Abstract Base Classes,ABCs)以及Python的内置数据结构。Python的抽象结构使得...

    java2python--java代码转python工具

    4. 面向对象编程:Java的继承、接口和抽象类在Python中可能表现为多重继承、协议(abc模块)和抽象基类。 5. 标准库和第三方库映射:将Java的API调用转换为Python的相应库函数,例如Java的集合框架到Python的内置...

    Python抽象类的新写法

    在Python 2.6及更早版本中,由于没有内置的抽象基类(ABC)支持,开发者需要使用一些“hack”方法来实现抽象类。然而,自Python 2.7开始,Python引入了`abc`模块,提供了官方支持来创建抽象类。 在Python 2.6之前的...

    Python-守护进程管理基类提供守护进程创建及终止日志记录子进程管理

    这个"Daemonize-Manage-master"项目可能包含一个基类,该基类为创建和管理守护进程提供了抽象接口。基类可能有以下关键方法: 1. `start()`: 启动守护进程,包括初始化配置,断开与终端的连接,设置工作目录,重定向...

    基于python的面向对象传感器库类抽象方法.zip

    总结来说,“基于python的面向对象传感器库类抽象方法.zip”中的内容很可能是关于如何在Python中构建面向对象的传感器库,通过抽象基类定义通用接口,以及子类如何实现这些接口以提供具体功能的详细教程。...

    Professional Python

    通过抽象基类,开发者可以定义一套必须实现的方法集合,从而强制子类遵循一定的结构。 ##### 第三部分:数据 - **第8章:字符串与Unicode** - 字符串是Python中最常用的数据类型之一。本章将详细介绍字符串的操作...

    在Python中定义和使用抽象类的方法

    在Python中,抽象方法是那些在基类中声明但没有实现的方法。在Java中,我们通常通过接口来实现这一概念,但在Python中,我们可以使用`abc`模块中的`abstractmethod`装饰器来定义抽象方法。例如: ```python from ...

Global site tag (gtag.js) - Google Analytics