美文网首页
抽象类和抽象方法

抽象类和抽象方法

作者: MononokeHime | 来源:发表于2018-07-13 21:18 被阅读0次

抽象类是包含抽象方法的类,而抽象方法不包含任何可实现的代码,只能在其子类中实现抽象函数的代码。

子类继承父类的成员变量和成员函数。

1.定义抽象类

在定义抽象类前需要从类库abc导入ABCmeta类(即Metaclass for defining Abstract BaseClasses,抽象基类的元类)和abstractmethod类。

在定义抽象类时需要在类定义中加入如下代码:

__metaclass__ = ABCmeta,即指定该类的元类是ABCmeta。所谓元类就是创建类的类。

在定义抽象方法时需要在前面加入如下代码:

@abstractmethod

因为抽象方法不包含任何可实现的代码,因此其函数体通常使用pass。下面演示抽象类的实现和多态。所谓的多态指的是在抽象类中定义一个方法,可以在其子类中重新实现,不同子类中实现的方法也不尽相同。

from abc import ABCMeta, abstractmethod

#抽象类
class Headers(object,metaclass=ABCMeta): # python3的写法

    def __init__(self):
        self.headers = ''

    @abstractmethod
    def _getBaiduHeaders(self):pass


#实现类
class BaiduHeaders(Headers):
    def __init__(self, url, username, password):
        self.url = url
        self.headers = self._getBaiduHeaders(username, password)

    def _getBaiduHeaders(self, username, password):
        client = GLOBAL_SUDS_CLIENT.Client(self.url)
        headers = client.factory.create('ns0:AuthHeader')
        headers.username = username
        headers.password = password
        headers.token = _baidu_headers['token']
        return headers

如果子类不实现父类的_getBaiduHeaders方法,则创建实例对象的时候抛出TypeError: Can't instantiate abstract class BaiduHeaders with abstract methods 异常

相关文章

  • 抽象与接口

    抽象类 抽象类和抽象方法必须用abstract修饰 抽象类不能被实例化 抽象类有默认构造方法 有抽象方法毕为抽象类...

  • 抽象类

    1. 抽象方法和抽象类 规则如下:抽象类和抽象方法必须使用abstract修饰符,抽象方法不能有方法体抽象类不能被...

  • 抽象类与接口

    抽象方法和抽象类特点 抽象方法和抽象类必须使用abstract修饰符来定义,有抽象方法的类只能被定义为抽象类,抽象...

  • 10.抽象类的特点

    抽象类的特点 抽象方法只能在抽象类里面 抽象类和抽象方法必须被abstract修饰 抽象类不能创建对象(不能实例化...

  • 抽象类与接口

    抽象类 抽象类即使用abstract修饰的类 抽象类和抽象方法必须使用abstract来修饰。抽象方法不能够有方法...

  • 简述接口和抽象类

    接口和抽象类 定义 抽象类:有抽象方法的类就是抽象类 抽象类中可以有一般的变量和一般的方法 子类继承抽象类必须实现...

  • Java 中的抽象与接口

    抽象方法和抽象类(abstract) 抽象方法和抽象类使用 abstract 来定义,有抽象方法的类必须被定义为抽...

  • 基础知识一

    一、抽象类与接口 抽象类 特点: 1.抽象类中可以构造方法 2.抽象类中可以存在普通属性,方法,静态属性和方法。 ...

  • 抽象类与接口的区别

    抽象类 1.抽象类中可以构造方法 2.抽象类中可以存在普通属性,方法,静态属性和方法。 3.抽象类中可以存在抽象方...

  • 面向对象进阶

    1. 抽象类和抽象方法 抽象类:使用abstract修饰的类,包含抽象方法的类必须是抽象类,但抽象类不一定包含抽象...

网友评论

      本文标题:抽象类和抽象方法

      本文链接:https://www.haomeiwen.com/subject/txudpftx.html