【发布时间】:2014-07-15 19:19:09
【问题描述】:
我在搞乱 python 元类,发现了一些我不知道存在或有效的非常有趣的东西:
class Meta(type):
def __new__(metacls, name, bases, kwargs, extra_thing=None):
if extra_thing is not None:
print(extra_thing)
return super().__new__(metacls, name, bases, kwargs)
def __init__(metacls, name, bases, kwargs, *args, **kwargs_):
super().__init__(metacls, name, bases, kwargs)
class TestClass(metaclass=Meta, extra_thing='foo'):
pass
当你运行它时,'foo' 会被打印出来。
显然,如果它们的元类允许,类可以有额外的关键字参数。
如果发现此功能可能有用的场景,是否可以利用它?还是应该将其单独保留以支持其他方法(例如定义类范围的变量 extra_thing)?
【问题讨论】:
-
你说的“还好吗”是什么意思?你的意思是“我可以依赖的记录在案的行为”还是“它是好的设计”?