decorator以防止直接调用基类方法。

virtualmethod的Python项目详细描述


decorator以防止直接调用基类方法。

用法

from virtualmethod import virtualmethod

class Base(object):
    @virtualmethod
    def my_virtual_method(self):
        print "This is a virtual method. Call me from a subclass!"

class A(Base):
    pass

class B(Base):
    def my_virtual_method(self):
        print "I went ahead and implemented my own version."

base = Base()
a = A()
b = B()

a.my_virtual_method()
-> This is a virtual method. Call me from a subclass!

b.my_virtual_method()
-> I went ahead and implemented my own version.

base.my_virtual_method()
-> Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "virtualmethod/core.py", line 11, in __call__
    raise TypeError("Virtual method %s must be called from a subclass." % self.__name__)
TypeError: Virtual method my_virtual_method must be called from a subclass.

注释

@virtualmethod@classmethod@staticmethod一起工作, 但必须先声明,即:

@virtualmethod
@classmethod
def my_virtual_class_method(cls):
    ...

学分

感谢Patrick Hensley的投入, 为了他的Denis Ryzhkovmethod_decorator模块。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何编写带有连接的动态JPA查询?   子列表上的java分区列表,其中相邻子列表的第一个和最后一个元素相同   java限定符注释方法找不到作为配置类的bean   java同时抛出主异常和子类型,有合适的方法吗?   LString将是一个链表类,它模仿标准的JavaString和StringBuilder类   spring上下文关闭时java停止ConcurrentTaskScheduler   Java继承基类使用派生类方法   java Google的zxing(斑马线)条形码库的位矩阵不是它应该位于的位置   java使用springhateoas反序列化包含(_链接和_嵌入)的JSON   java破坏者如何使用环形缓冲区读取文件?   java在Android中获得用户的日常路线?   javajenkins:依赖于其他工件/项目的构建作业   java家庭替换应用程序/视图网格使用哪种布局?   java如何从签名证书创建信任库和密钥库?