Когда я кодировал C ++ для жизни, я составлял все, что мог. Использование const - отличный способ помочь компилятору помочь вам. Например, константа возвращаемых значений метода может спасти вас от опечаток, таких как:
foo() = 42
, когда вы имели в виду:
foo() == 42
Если foo () определен для возврата ссылка не const:
int& foo() { /* ... */ }
Компилятор с радостью позволит вам назначить значение анонимному времени, возвращаемому вызовом функции. Создание константы:
const int& foo() { /* ... */ }
Устраняет эту возможность.
Если вы используете библиотеку типов, интегрированную в 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)