我尝试制作一个我想要完成的任务的简化版本;这是:
class CustomString():
def __init__(self, function):
self._creator_function = function
@property
def string(self, *args):
return self._creator_function(*args)
def creator1(arg1):
return 'Hello ' + arg1
def creator2(arg1, arg2):
return 'Aloha ' + arg1 + ',' + arg2
CustomString 类是一个动态字符串生成器,它在初始化时提供了一个函数,该函数执行返回给定特定参数的字符串。这些函数可能需要明确数量的参数,如下例所示,但类方法应该灵活,因为每个实例可能有不同的创建者函数。
如果我运行以下命令:
c = CustomString(creator1)
c.string('John')
我希望看到:
'Hello John'
但是我得到了一个错误:
TypeError: creator1() missing 1 required positional argument: 'arg1'
最佳答案
从字符串
中删除属性
class CustomString():
def __init__(self, function):
self._creator_function = function
def string(self, *args):
return self._creator_function(*args)
def creator1(arg1):
return 'Hello ' + arg1
def creator2(arg1, arg2):
return 'Aloha ' + arg1 + ',' + arg2
c = CustomString(creator1)
print(c.string('John')) # prints Hello John
关于Python - 类中的可变长度参数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59933900/