Skip to content

Instantly share code, notes, and snippets.

@sxslex
Created November 24, 2017 19:41
Show Gist options
  • Save sxslex/011668dec5f52051818199ccbb677047 to your computer and use it in GitHub Desktop.
Save sxslex/011668dec5f52051818199ccbb677047 to your computer and use it in GitHub Desktop.
meta programacao
class MyClass(object):
"""Legal."""
def __init__(self, **kwargs):
object.__init__(self)
self._session = dict(**kwargs)
self._session['idade'] = 98
self._a_salvar = []
def __getattr__(self, name):
if name in self._session.keys():
return self._session.get(name)
return super(MyClass, self).__getattribute__(name)
def __setattr__(self, key, value):
if key not in ('_session', '_a_salvar', ):
self._a_salvar.append((key, value, ))
self._session[key] = value
return super(MyClass, self).__setattr__(key, value)
def __dir__(self):
resp = super(MyClass, self).__dir__()
resp.extend(self._session.keys())
return list(set(resp))
def save(self):
print('salvando no banco')
print(self._a_salvar)
self._a_salvar = []
d = MyClass(nome='slex', idade=38)
print(d)
print(d.nome)
print(d.idade)
print(dir(d))
print(d._a_salvar)
d.nome = 'lott'
print(d._a_salvar)
d.save()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment