Вы можете использовать getattr
:
def switch_off(self):
for i in self.__dict__.values():
getattr(i, 'switch_off', lambda :None)()
Или, без цикла, для ясности:
def switch_off(self):
getattr(self.house, 'switch_off', lambda :None)()
getattr(self.car, 'switch_off', lambda :None)()
getattr(self.bike, 'switch_off', lambda :None)()
getattr
предоставляет возможность передать необязательный третий параметр:возвращаемое значение, если переданный объект не имеет требуемого атрибута.В этом случае, если house
, car
или bike
равно None
, будет возвращен и вызван lambda
вместо исходного атрибута switch_off
.