Как выполнить функцию, если передан экземпляр класса?

Когда я кодировал C ++ для жизни, я составлял все, что мог. Использование const - отличный способ помочь компилятору помочь вам. Например, константа возвращаемых значений метода может спасти вас от опечаток, таких как:

foo() = 42

, когда вы имели в виду:

foo() == 42

Если foo () определен для возврата ссылка не const:

int& foo() { /* ... */ }

Компилятор с радостью позволит вам назначить значение анонимному времени, возвращаемому вызовом функции. Создание константы:

const int& foo() { /* ... */ }

Устраняет эту возможность.

3
задан martineau 1 March 2019 в 22:35
поделиться

1 ответ

Если вы используете библиотеку типов, интегрированную в python, вы можете сделать это.

import types


class TestClass:
    def __init__(self):
        self.name = None

    def __getattribute__(self, attr):
        method = object.__getattribute__(self, attr)
        if not method:
            raise Exception("Attribute %s not implemented" % attr)
        if type(method) == types.MethodType:
            self.run()
        return method

    def run(self):
        if self.name is None:
            raise Exception("'name' attribute is 'None'")

    def __call__(self):
        self.run()
        return self


def UsesTestClass(testClass):
    print(testClass.name)


testClass = TestClass()
testClass.name = "Hello"
UsesTestClass(testClass)
0
ответ дан SafeDev 1 March 2019 в 22:35
поделиться
Другие вопросы по тегам:

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