+ return hash(self.__name)
+
+ def add_alias(self, other):
+ if getattr(other, '__str__', None):
+ if callable(other.__str__) and other.__str__() != self.name:
+ self.__aliases |= {other.__str__()}
+ elif isinstance(other, Meta):
+ if other.name != self.name:
+ self.__aliases |= other.__aliases
+ else:
+ raise MetaException('No __str__ method found in {!r}'.format(other))
+
+ @property
+ def name(self):
+ return self.__name