我试图将一个类作为参数发送给一个函数,然后在该函数中创建该类的一个对象,并使用该对象。但是,我的尝试导致错误。
def test(some_class):
x = some_class() # first attempt
x = some_class.__init__() # second attempt
第一次尝试产生了此错误:AttributeError: Table instance has no __call__ method
,第二次尝试产生了此错误:
TypeError: unbound method __init__() must be called with Table instance as first argument (got int instance instead)
。
这样做的正确方法是什么?
答案 0 :(得分:3)
第一个错误告诉您,您正在传递类的实例,而不是类本身,作为函数的参数!这就是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
传递给您的函数。