class MyMeta(type):
def __init__(cls, name, bases, dct):
super(MyMeta, cls).__init__(name, bases, dct)
attributes = dict(cls.__dict__)
user_attrs = [k for k, _ in attributes.items() if not (k.startswith('_') and k.endswith('_'))]
for attr in user_attrs:
def make_method(name):
def _method(self):
return getattr(self, name.split('_')[1])
return _method
setattr(cls, f'get_{attr[0]}', make_method(f'get_{attr[0]}'))
class Kek(metaclass=MyMeta):
a = 10
b = 20
c = 30
if __name__ == '__main__':
kek = Kek()
print(kek.get_a())
print(kek.get_b())
print(kek.get_c())
Y2xhc3MgTXlNZXRhKHR5cGUpOgoKICAgIGRlZiBfX2luaXRfXyhjbHMsIG5hbWUsIGJhc2VzLCBkY3QpOgogICAgICAgIHN1cGVyKE15TWV0YSwgY2xzKS5fX2luaXRfXyhuYW1lLCBiYXNlcywgZGN0KQogICAgICAgIGF0dHJpYnV0ZXMgPSBkaWN0KGNscy5fX2RpY3RfXykKICAgICAgICB1c2VyX2F0dHJzID0gW2sgZm9yIGssIF8gaW4gYXR0cmlidXRlcy5pdGVtcygpIGlmIG5vdCAoay5zdGFydHN3aXRoKCdfJykgYW5kIGsuZW5kc3dpdGgoJ18nKSldCiAgICAgICAgZm9yIGF0dHIgaW4gdXNlcl9hdHRyczoKICAgICAgICAgICAgZGVmIG1ha2VfbWV0aG9kKG5hbWUpOgogICAgICAgICAgICAgICAgZGVmIF9tZXRob2Qoc2VsZik6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZiwgbmFtZS5zcGxpdCgnXycpWzFdKQoKICAgICAgICAgICAgICAgIHJldHVybiBfbWV0aG9kCgogICAgICAgICAgICBzZXRhdHRyKGNscywgZidnZXRfe2F0dHJbMF19JywgbWFrZV9tZXRob2QoZidnZXRfe2F0dHJbMF19JykpCgoKY2xhc3MgS2VrKG1ldGFjbGFzcz1NeU1ldGEpOgogICAgYSA9IDEwCiAgICBiID0gMjAKICAgIGMgPSAzMAoKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICBrZWsgPSBLZWsoKQogICAgcHJpbnQoa2VrLmdldF9hKCkpCiAgICBwcmludChrZWsuZ2V0X2IoKSkKICAgIHByaW50KGtlay5nZXRfYygpKQo=