В настоящее время у меня есть TestClass
, который можно вызвать.Вызываемый выполняет функцию, которая вызывает исключение, если какой-либо атрибут равен None
.Цель определения его как вызываемого такова, что когда экземпляр TestClass
передается другой функции или копируется, он выполняет проверку того, что все атрибуты существуют перед передачей, иначе он вызовет исключение.
Строка ниже, демонстрирующая эту логику, выглядит следующим образом: UsesTestClass(testClass())
.
В идеале я хочу иметь возможность выполнять ту же проверку без необходимости «вызывать» экземпляр класса.Например, UsesTestClass(testClass)
.Есть ли магический метод или какой-либо другой способ настроить класс так, чтобы он мог выполнять функцию перед передачей в качестве аргумента?
class TestClass:
def __init__(self):
self.name = None
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())