Python 问包裹';让用户扩展一个类,但用户不能实例化它?
我正在编写一个C库的Python绑定,它允许用户在C中创建自定义“类”,并通过另一个对象实例化它们,例如:Python 问包裹';让用户扩展一个类,但用户不能实例化它?,python,python-3.x,class,plugins,Python,Python 3.x,Class,Plugins,我正在编写一个C库的Python绑定,它允许用户在C中创建自定义“类”,并通过另一个对象实例化它们,例如: my_class=create_class(init_回调,finalize_回调,…); instance1=管理器\创建\对象(一些\管理器、我的\类等); instance2=manager\u create\u对象(一些\u管理器,我的\u类,…); 不幸的是,C语言不是面向对象的,所以这个库在语言提供的范围内使用这个概念 在Python中,为了让用户定义自己的类,我想使用Pyt
my_class=create_class(init_回调,finalize_回调,…);
instance1=管理器\创建\对象(一些\管理器、我的\类等);
instance2=manager\u create\u对象(一些\u管理器,我的\u类,…);
不幸的是,C语言不是面向对象的,所以这个库在语言提供的范围内使用这个概念
在Python中,为了让用户定义自己的类,我想使用Python类的概念:
类MyClass(package.BaseClass):
定义初始化(自…):
...
def_最终确定(自…):
...
instance1=某个\u管理器。创建\u对象(MyClass,…)
instance2=某个\u管理器。创建\u对象(MyClass,…)
我不能直接用MyClass()
实例化对象,因为它需要所述的管理器(请参阅上面的manager\u create\u object()
)
要求用户扩展包的类(
package.BaseClass
,在本例中)而不能直接用MyClass()
实例化派生类(MyClass
),这是否奇怪/不和谐?这主要是针对插件接口,我们需要用户在Python模块文件中定义一个或多个类。坚持要求用户(客户端)提供特定功能的本地实现并不罕见,特别是如果您可以提供示例和/或模板以获得所需的支持。许多供应商都这样做,因为他们无法覆盖所有的实现
但是,请务必给出各种各样的示例。你想让你的用户更容易。更好的是,交付构成几种流行环境的工作实现的文件