我想要一个紧凑的基于类的python dsl,格式如下:
class MyClass(Static):
z = 3
def _init_(cls, x=0):
cls._x = x
def set_x(cls, x):
cls._x = x
def print_x_plus_z(cls):
print cls._x + cls.z
@property
def x(cls):
return cls._x
class MyOtherClass(MyClass):
z = 6
def _init_(cls):
MyClass._init_(cls, x=3)
我不想以后再写MyClass()
和{
我使用了元类并设法使_init_
,print_x
和子类化正常工作,但是属性不起作用。
有人能提出更好的选择吗?
我使用的是python2.4+
要给一个类(而不是它的实例)一个属性,您需要将该property对象作为类元类的属性(因此您可能需要创建一个自定义元类,以避免将该属性强加给具有相同元类的其他类)。类似地,对于特殊方法,如
__init__
如果它们在类中,它们会影响实例(您不希望创建实例)以使它们影响类,则需要将它们放在(自定义)元类中。你想通过编程“一个metalevel up”来实现什么呢?也就是说,从来没有用自定义元类实例化类,而不是普通类的普通实例?这似乎只是一点点额外的工作没有回报;-)。在相关问题 更多 >
编程相关推荐