Как я могу потребовать, чтобы аргумент метода в Java реализовал несколько интерфейсов?

Python позволит Вам объявить функцию в функции, таким образом, Вы не должны будете делать exec обман.

def __init__(self):

    def dynamo(self, arg):
        """ dynamo's a dynamic method!
        """
        self.weight += 1
        return arg * self.weight
    self.weight = 50

    setattr(self.__class__, 'dynamo', dynamo)

, Если Вы хотите иметь несколько версий функции, можно поместить все это в цикл и варьироваться, что Вы называете ими в эти setattr функция:

def __init__(self):

    for i in range(0,10):

        def dynamo(self, arg, i=i):
            """ dynamo's a dynamic method!
            """
            self.weight += i
            return arg * self.weight

        setattr(self.__class__, 'dynamo_'+i, dynamo)
        self.weight = 50

(я знаю, это не большой код, но он понимает через). До установки docstring я знаю, что это возможно, но я должен был бы искать его в документации.

Редактирование : можно установить docstring через dynamo.__doc__, таким образом, Вы могли сделать что-то вроде этого в своем теле цикла:

dynamo.__doc__ = "Adds %s to the weight" % i

Другое Редактирование : Со справкой от @eliben и @bobince, должна быть решена проблема закрытия.

52
задан Jason S 23 June 2017 в 06:16
поделиться

1 ответ

You could do it with generics:

public <T extends Appendable & Closeable> void spew(T t){
    t.append("Bleah!\n");
    if (timeToClose())
        t.close();
}

Your syntax was almost right, actually.

83
ответ дан 7 November 2019 в 09:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: