class symbol(object):
+ __slots__ = []
isafe = set("abcdefghijklmnopqrstuvwxyz" +
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
"$%^&*_=/.")
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
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