Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 问包裹';让用户扩展一个类,但用户不能实例化它?_Python_Python 3.x_Class_Plugins - Fatal编程技术网

Python 问包裹';让用户扩展一个类,但用户不能实例化它?

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

我正在编写一个C库的Python绑定,它允许用户在C中创建自定义“类”,并通过另一个对象实例化它们,例如:

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模块文件中定义一个或多个类。

坚持要求用户(客户端)提供特定功能的本地实现并不罕见,特别是如果您可以提供示例和/或模板以获得所需的支持。许多供应商都这样做,因为他们无法覆盖所有的实现

但是,请务必给出各种各样的示例。你想让你的用户更容易。更好的是,交付构成几种流行环境的工作实现的文件