Как мне инициализировать несколько аргументов класса, которые пришли в виде цепочки, а затем вычислить их сумму?
Я пробовал много способов, но НИЧЕГО
Есть ли у вас какие-либо идеи?
>>> Chain(2.5)(2)(2)(2.5) # sum
9
>>> Chain(3)(1.5)(2)(3) # sum
9.5
Что это за класс Chain, который вы используете?
Пожалуйста отредактируйте свой пост и покажите свой код.
Пожалуйста, обновите свой вопрос с помощью этих "tried many ways".
Я бы не стал писать такой код с самого начала. Просто принимайте произвольные аргументы и перебирайте их внутри вызываемого объекта.
Цепь - это класс, который я должен завершить, чтобы вычислить сумму аргументов.
Вы можете сделать Chain класс с __call__ методом, чтобы вызов экземпляра всегда создавал другой Chain экземпляр. Но тогда вам нужен дополнительный метод для преобразования «конечного» экземпляра в int, например Chain(2.5)(2)(2)(2.5).result().
Если все, что вы хотите сделать, это взять сумму вещей, то почему бы просто не написать sum([2.5, 2, 2, 2.5])? Что в этом плохого?
Это вопрос, который я видел в Интернете.
В общем, вы захотите добавить в свой класс метод __call__, чтобы вызов экземпляра возвращал новый экземпляр. Ваш класс также должен подклассировать тип, соответствующий желаемому результату.
В этом конкретном случае новый экземпляр может, например, поддерживать текущую сумму начального значения и всех последовательных аргументов.
class Chain(float):
def __call__(self, x):
return Chain(self + x)
Затем
>>> Chain(2.5)
2.5
>>> Chain(2.5)(2)
4.5
>>> Chain(2.5)(2)(2)
6.5
>>> Chain(2.5)(2)(2)(2.5)
9.0
Пожалуйста, уточните вашу конкретную проблему или предоставьте дополнительную информацию, чтобы выделить именно то, что вам нужно. Как сейчас написано, трудно точно сказать, о чем вы спрашиваете.