我目前重构了一个定义客户机或服务器的类。班上有很多
if client:
XXXXXXXXXXXX
elif server:
YYYYYYYYYYYY
所以我决定用相似的代码创建一个类a,为客户机创建一个C类,为继承a的服务器创建一个S类(当然,它们没有这些名称^ ^)
所以A类是一种抽象类。但问题是Python2.5没有抽象类,它是2.6版本附带的。所以我想知道是否有一种方法可以禁止类a的实例化
一个解决方案是在类a的构造函数中引发一个NotImplemented错误,但是C和S有相同的代码,所以我把它放在了“抽象”类a中(坏主意?)。在
这看起来很愚蠢,但我只是偶尔用Python开发,而且我是一个年轻的程序员。 你有什么建议?在
这种方法的优点是,您不需要对子类做任何操作来使其成为非抽象的。在
输出:
^{pr2}$如果要创建抽象子类,只需执行以下操作:
可以在构造函数的开头调用方法“foo”。在中,此方法引发异常。在C和S中,您重新定义了“foo”,这样就不再有异常了。在
在静态类型语言中,您使用抽象基类(ABC),因为您需要一些具有定义大小、接口等的对象来传递。否则,无法编译尝试调用该对象上的方法的代码。在
Python不是一种静态类型语言,调用代码根本不需要知道它调用的对象的类型。因此,您可以通过记录接口需求并直接在两个不相关的类中实现接口来“定义”ABC。在
例如
在这里,您可以使用参数与调用匹配的do\u-thing方法传入任何对象。在
相关问题 更多 >
编程相关推荐