gpt4 book ai didi

python - 如何从作为参数传递的类初始化对象

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

我试图将一个类作为参数发送给一个函数,然后在函数中创建该类的一个对象,并使用该对象。然而,我的尝试导致了错误。

def test(some_class):
x = some_class() # first attempt
x = some_class.__init__() # second attempt

第一次尝试产生了此错误:AttributeError:表实例没有 __call__ 方法,第二次尝试产生了以下错误:类型错误:必须使用 Table 实例作为第一个参数调用未绑定(bind)方法 __init__()(改为使用 int 实例)

正确的做法是什么?

最佳答案

第一个错误告诉您正在传递类的实例,而不是类本身作为函数的参数!这就是 Python 进行解释的原因

x = some_class()

作为对实例的调用,并且不作为类的实例化(创建)。

下面是一个示例,说明您想要做的事情实际上是如何运作的:

In [1]: class Table(object):
...: def __init__(self, number):
...: self.number = number
...:

In [2]: def test(some_table):
...: x = some_table(5)
...: return x.number == 5
...:

In [3]: test(Table)
Out[3]: True

我认为(但我在这里猜测)你已经做了一些事情:

In [5]: a_table = Table(10)

In [6]: test(a_table)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-6-c3b83a3a3118> in <module>()
----> 1 test(a_table)

<ipython-input-2-01a30f6ba7b1> in test(some_table)
1 def test(some_table):
----> 2 x = some_table(5)
3 return x.number == 5
4

TypeError: 'Table' object is not callable

不要创建a_table,只需将Table传递给您的函数。

关于python - 如何从作为参数传递的类初始化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27649668/

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