completion/intellisense 关于 (*args ,**kwargs) 函数
completion/intellisense on (*args ,**kwargs) functions
有没有办法让 completion/intellisense on (*args ,**kwargs) 函数?
例如:
class GetVar(GetVarInterface):
@classmethod
def fromcustom(cls,locorvar,offset=0,varType="int", name=None,deref=False,member=None):
return GetVarCustom(locorvar,offset,varType, name,deref,member)
class GetVarCustom(GetVar):
def __init__(self,locorvar,offset=0,varType="int", name=None,deref=False,member=None):
我想在不指定构造函数的每个参数(例如使用 *vars、**kwargs)的情况下实现它,但不想失去 completion/intellisense 能力。有办法吗?
当前实现的缺点是每次更改都必须复制签名两次...
唯一的办法就是在函数下加注释提示参数,否则不行;如果 ide 读到一个函数有未定义的参数,它会告诉你它是未定义的。
一个“解决方案”是只使用公共参数并将其余参数作为 kwargs 传递,或者您可以保留原始 init。
class Single_Init:
def __init__(self, val_a, val_b, name=None):
self.val_a = val_a
self.val_b = val_b
self.name = name
class Single_Init_B(Single_Init):
# The previous contructor is calld
def get_result(self):
return self.val_a + self.val_b
class Split_Const:
def op_offset(self, offset):
self.offset = offset
def __init__(self, name, member=None, **kwargs):
""" You olso can hint in a func coment """
self.name = name
self.member = member
if 'offset' in kwargs:
self.offset = kwargs['offset']
else:
self.offset = None
if __name__ == '__main__':
single = Single_Init_B(2, 3)
print('Single:', single.get_result())
split = Split_Const('Name')
split.op_offset(0.5)
print('Split:', split.offset)
在该站点外找到解决方案..
@functools.wraps(functools.partial(GetVarCustom.__init__,1))
def f(*args,**kwargs):
return GetVarCustom(*args,**kwargs)
当然,如果是标准函数,那就更容易了。但是,您需要更新包装的分配属性。否则会改变函数名。
@functools.wraps(GetVarCustom.value,assigned=['__doc__'])
def getvalue(*args,**kwargs):
return self_custom.value(*args,**kwargs)
有没有办法让 completion/intellisense on (*args ,**kwargs) 函数?
例如:
class GetVar(GetVarInterface):
@classmethod
def fromcustom(cls,locorvar,offset=0,varType="int", name=None,deref=False,member=None):
return GetVarCustom(locorvar,offset,varType, name,deref,member)
class GetVarCustom(GetVar):
def __init__(self,locorvar,offset=0,varType="int", name=None,deref=False,member=None):
我想在不指定构造函数的每个参数(例如使用 *vars、**kwargs)的情况下实现它,但不想失去 completion/intellisense 能力。有办法吗?
当前实现的缺点是每次更改都必须复制签名两次...
唯一的办法就是在函数下加注释提示参数,否则不行;如果 ide 读到一个函数有未定义的参数,它会告诉你它是未定义的。 一个“解决方案”是只使用公共参数并将其余参数作为 kwargs 传递,或者您可以保留原始 init。
class Single_Init:
def __init__(self, val_a, val_b, name=None):
self.val_a = val_a
self.val_b = val_b
self.name = name
class Single_Init_B(Single_Init):
# The previous contructor is calld
def get_result(self):
return self.val_a + self.val_b
class Split_Const:
def op_offset(self, offset):
self.offset = offset
def __init__(self, name, member=None, **kwargs):
""" You olso can hint in a func coment """
self.name = name
self.member = member
if 'offset' in kwargs:
self.offset = kwargs['offset']
else:
self.offset = None
if __name__ == '__main__':
single = Single_Init_B(2, 3)
print('Single:', single.get_result())
split = Split_Const('Name')
split.op_offset(0.5)
print('Split:', split.offset)
在该站点外找到解决方案..
@functools.wraps(functools.partial(GetVarCustom.__init__,1))
def f(*args,**kwargs):
return GetVarCustom(*args,**kwargs)
当然,如果是标准函数,那就更容易了。但是,您需要更新包装的分配属性。否则会改变函数名。
@functools.wraps(GetVarCustom.value,assigned=['__doc__'])
def getvalue(*args,**kwargs):
return self_custom.value(*args,**kwargs)