X-Git-Url: http://www.dolda2000.com/gitweb/?a=blobdiff_plain;f=coe%2Fdata.py;fp=coe%2Fdata.py;h=aaa862dcf9ed6a84f679b43a00607fe4b15c4fa8;hb=6d98d3d8cebcff5dd8a3ee274d4392d862f20172;hp=b65dbae17ccee8b91d87ecf511dc1e693868d123;hpb=5fa20111765780c54e72becce929b973dc78ed2e;p=coe.git diff --git a/coe/data.py b/coe/data.py index b65dbae..aaa862d 100644 --- a/coe/data.py +++ b/coe/data.py @@ -1,4 +1,5 @@ class symbol(object): + __slots__ = [] isafe = set("abcdefghijklmnopqrstuvwxyz" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "$%^&*_=/.") @@ -47,18 +48,15 @@ class symbol(object): return "%s:%s" % (self.quote(self.ns), self.quote(self.name)) class usymbol(symbol): + __slots__ = ["name"] ns = "" + def __init__(self, name): self.name = name - def __hash__(self): - return hash(self.name) - def __eq__(s, o): - if isinstance(o, str): - return s.name == o - return super().__eq__(o) - class nssymbol(symbol): + __slots__ = ["ns", "name"] + def __init__(self, ns, name, *args, **kw): super().__init__(*args, **kw) self.name = name @@ -77,3 +75,8 @@ class obj(object): self.__dict__[key] = val def __delitem__(self, key): del self.__dict__[key] + def __getattr__(self, name): + try: + return self.__dict__[symbol.get("", name)] + except KeyError: + raise AttributeError(name) from None