小编fre*_*all的帖子

如何从用C#编写的抽象基类继承

我试图使用Python.NET(2.1.0)继承Python(2.7)中的抽象.NET基类.我是Python n00b,但据我所知...

这是我在Python中设法做的事情,并且工作正常:

import abc

class Door(object):
    __metaclass__ = abc.ABCMeta

    def open(self):
        if not self.is_open():
            self.toggle()

    def close(self):
        if self.is_open():
            self.toggle()

    @abc.abstractmethod
    def is_open(self):
        pass

    @abc.abstractmethod
    def toggle(self):
        pass

class StringDoor(Door):
    def __init__(self):
        self.status = "closed"

    def is_open(self):
        return self.status == "open"

    def toggle(self):
        if self.status == "open":
            self.status = "closed"
        else:
            self.status = "open"

class BooleanDoor(Door):
    def __init__(self):
        self.status = True

    def is_open(self):
        return self.status

    def toggle(self):
        self.status = not (self.status)

Door.register(StringDoor)
Door.register(BooleanDoor)
Run Code Online (Sandbox Code Playgroud)

现在,我所做的只是用C#表示替换抽象基类Door:

namespace PythonAbstractBaseClass
{
    public abstract …
Run Code Online (Sandbox Code Playgroud)

c# python abstract-class metaclass python.net

19
推荐指数
2
解决办法
1157
查看次数

标签 统计

abstract-class ×1

c# ×1

metaclass ×1

python ×1

python.net ×1