gpt4 book ai didi

python - 如何向类的用户解释其属性之一的预期类型?

转载 作者:太空宇宙 更新时间:2023-11-03 14:31:22 25 4
gpt4 key购买 nike

我正在用 Python 开发一个类,其中它的一个属性应该代表一个神经网络。我希望这个属性实际上是另一个类的实例,我们称之为NN,具有多种方法(例如用于训练的train()predict() 用于预测等)。此外,我认为初始化此属性的合理方法是使用我的类的构造函数,该构造函数需要 NN 类的实例作为其参数之一。

我对如何解决这个问题的第一个想法是实现一个接口(interface),然后类型检查用户提供给我的类构造函数的任何内容,以确保它来自预期的NN 类。然而,接口(interface)( 1 )和类型检查( 2345 )似乎都不是 Python 中的良好实践。

相反,我们应该使用 Duck typing ,然后简单地尝试使用对象方法,直到我们不能为止(即将类型检查推迟到运行时)。然而,就我而言,NN 类可能非常复杂,具有多种方法和属性。如果我确实放弃了接口(interface)的想法,并且只是期望我的类的用户提供一个具有所有必要方法和属性的对象,那么他/她如何知道这个对象的期望是什么?我应该将所有这些信息写入我的类文档字符串、构造函数文档字符串或其他地方吗?或者有更好的方法来解决这种情况吗?

最佳答案

我想说 __init__ 文档字符串是您想要放置它的地方,因为那是提供 NN 对象的地方。

类似于:

"""
(...)
:param NN: an object supporting run(), train() and validate() methods
(...)
"""

这里的优点是你可以提供任何东西作为参数 - 天哪,你可以编写一个 NN 参数,它甚至不是一个类而是一个函数,或者是内置函数的修改实例,或者其他诸如此类的疯狂事情 - 只要用户提供正确运行的东西,它就会像你的神经网络一样工作

关于python - 如何向类的用户解释其属性之一的预期类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47261519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com