python py__implementing_abstract_classes.py

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python py__implementing_abstract_classes.py相关的知识,希望对你有一定的参考价值。

"""
Implementing abstract classes

Source:
	http://stackoverflow.com/questions/2124190/how-do-i-implement-interfaces-in-python#2124415
"""
from abc import ABCMeta, abstractmethod

class IInterface:
    __metaclass__ = ABCMeta

    @classmethod
    def version(self): return "1.0"
    @abstractmethod
    def show(self): raise NotImplementedError

class MyServer(IInterface):
    def show(self):
        print 'Hello, World 2!'

class MyBadServer(object):
    def show(self):
        print 'Damn you, world!'


class MyClient(object):

    def __init__(self, server):
        if not isinstance(server, IInterface): raise Exception('Bad interface')
        if not IInterface.version() == '1.0': raise Exception('Bad revision')

        self._server = server


    def client_show(self):
        self._server.show()


# This call will fail with an exception
try:
    x = MyClient(MyBadServer)
except Exception as exc:
    print 'Failed as it should!'

# This will pass with glory
MyClient(MyServer()).client_show()

以上是关于python py__implementing_abstract_classes.py的主要内容,如果未能解决你的问题,请参考以下文章

python中 __init__.py的作用

[python][转载]__init__.py使用

Python __init__.py 作用详解

Python __init__.py 作用详解

python2中的__init__.py文件的作用

python基础:__init__.py和__init__函数的作用