Pel*_*can 6 python oop instance
尝试实例化以下类时,出现以下错误:
"TypeError: __init__() takes exactly 2 arguments (3 given)"
Run Code Online (Sandbox Code Playgroud)
你知道会出现什么问题吗?这是类定义:
class db_create_table():
'''
doc here
'''
def __init__(self,TableName, **kwargs ):
self.TableName = TableName
for k,v in kwargs.iteritems():
setattr(self, k, k)
schema = {"id" : { "type":"Integer", "primary":"primary_key=True", "unique":"unique = True"},
"col1" : { "type":"String()", "primary":"primary_key=False", "unique":"unique = True"},
"col2" : { "type":"String()", "primary":"primary_key=False", "unique":"unique = False"},
"col3" : { "type":"String()", "primary":"primary_key=False", "unique":"unique = False"},
"col4" : { "type":"String()", "primary":"primary_key=False", "unique":"unique = False"},
"CreatedOn" : { "type":"DateTime", "primary":"", "unique":"unique = False"},
"UpdatedOn" : { "type":"DateTime", "primary":"primary_key=False", "unique":"unique = False"},
}
db_create_table('Table1', schema)
Run Code Online (Sandbox Code Playgroud)
为了传递schema并将其解压缩到 中**kwargs,您必须使用**schema:
db_create_table('Table1', **schema)
Run Code Online (Sandbox Code Playgroud)
说明:
单星号形式 ( *args) 将序列解包以形成参数列表,而双星号形式 ( **kwargs) 将类似 dict 的对象解包为关键字参数列表。
没有任何星号,给定的对象将按原样直接传递,无需任何解包。
另请参阅如何在 Python 中使用 *args 和 **kwargs。