gpt4 book ai didi

当我传递 2 个参数时,Python 要求 3 个参数;当我传递 3 个参数时,Python 要求 2 个参数

转载 作者:行者123 更新时间:2023-11-30 23:02:16 32 4
gpt4 key购买 nike

我有一个类和构造函数,如下所示:

def init(log, edge):
if edge:
return Helper(log, edge)
return BookableProduct(log)
class BookableProduct():
# Add helper to property bag
def __init__(self, log, Kernel):
self.log = log
self.Kernel = Kernel

我刚刚添加了内核参数,它导致了错误。

如果我尝试像这样调用它:

import BookableProduct
log = PyLogger.get(edge.Controller.Kernel)
BookableProduct.init(log, edge)

我收到错误:

2016-01-04 15:12:33,422 [38] ERROR Panagora.WebCore.Scripting.DefaultRuntimeExtensionsManager - Unable to run script C:\dev\..\Extensions\Global.py
Microsoft.Scripting.ArgumentTypeException: __init__() takes exactly 3 arguments (2 given)

但是如果我尝试像这样运行它:

import BookableProduct
log = PyLogger.get(edge.Controller.Kernel)
BookableProduct.init(log, edge, edge.Controller.Kernel)

我收到以下错误:

2016-01-04 15:12:20,117 [36] ERROR Panagora.WebCore.Scripting.DefaultRuntimeExtensionsManager - Unable to run script C:\dev\git-sites\..\Extensions\Global.py
Microsoft.Scripting.ArgumentTypeException: init() takes exactly 2 arguments (3 given)

最佳答案

尚不完全清楚您要做什么,但我猜测您想要一个产品工厂,它在某些情况下返回 BookableProduct 的实例,在其他情况下返回 Helper 的实例.

当该单词(以 __init__ 形式)具有时,通过调用工厂函数(不是任何类的方法)init,您在某种程度上混淆了这个问题Python 中特殊且保留的含义。

相反,像这样编写你的工厂:

def product_factory(log, edge):
if edge:
return Helper(log, edge)
return BookableProduct(log, edge)

请注意,我更改了名称,以便更清楚地了解发生的情况,并在实例化 BookableProduct 时添加了之前缺少的第二个参数(这些参数以及 self 将被传递给 BookableProduct 中的初始化器 __init__

关于当我传递 2 个参数时,Python 要求 3 个参数;当我传递 3 个参数时,Python 要求 2 个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34593192/

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