我正在用Python开发一个类,其中一个属性应该表示一个神经网络。我希望这个属性实际上是另一个类的实例,我们称它为NN
,有几个方法(比如train()
用于训练,predict()
用于预测,等等)。此外,我认为初始化这个属性的一个合理方法是使用类的构造函数,该构造函数期望NN
类的实例作为其参数之一。你知道吗
如何解决这个问题的第一个想法是实现一个接口,然后对用户提供给我的类构造函数的内容进行类型检查,以确保它来自预期的NN
类。然而,在Python中,接口(1)和类型检查(2,3,4,5)似乎都不是好的实践。你知道吗
相反,我们应该使用Duck typing,并简单地尝试使用objects方法,直到无法使用为止(即,将类型检查推迟到运行时)。但是,在我的例子中,NN
类可能非常复杂,有几个方法和属性。如果我真的放弃了接口的想法,仅仅期望我的类的用户提供一个对象所有必要的方法和属性,他/她怎么知道这个对象的期望值是什么?我应该在类docstring、构造函数docstring或其他地方编写所有这些信息吗?还是有更好的方法来解决这个问题?你知道吗
我想说
__init__
docstring是您想要将它放入的位置,因为NN对象将在这里提供。你知道吗比如:
这里的优点是,你可以提供任何作为参数-见鬼,你可以编写一个NN参数,它甚至不是一个类,而是一个函数,或者一个修改的内置实例,或者其他类似的疯狂的东西-只要用户提供了正确运行的东西,它将作为你的神经网络工作。你知道吗
从python3.5开始,您可以使用type hints。这将向用户记录所需的类型,并启用可选的脱机类型检查。你知道吗
相关问题 更多 >
编程相关推荐