W Python2.7 ten kod może działać bardzo dobrze, __getattr__
w MetaTable
będzie działać. Ale w Pythonie 3.5 to nie działa.__metaclass__ w Python3.5
class MetaTable(type):
def __getattr__(cls, key):
temp = key.split("__")
name = temp[0]
alias = None
if len(temp) > 1:
alias = temp[1]
return cls(name, alias)
class Table(object):
__metaclass__ = MetaTable
def __init__(self, name, alias=None):
self._name = name
self._alias = alias
d = Table
d.student__s
Ale w Pythonie 3.5 pojawia się błąd atrybutu Zamiast:
Traceback (most recent call last):
File "/Users/wyx/project/python3/sql/dd.py", line 31, in <module>
d.student__s
AttributeError: type object 'Table' has no attribute 'student__s'
Pierwszy sposób może działać. Dzięki. – wyx
Dzięki za to. Dostał mój ulubiony system wtyczek działający w pythonie 3. –