-1
我想有基於緊湊級蟒蛇的DSL以下形式:緊湊級DSL在python
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()
和MyOtherClass()
之後。只想讓這個工作只有類定義。
MyClass.print_x_plus_z()
c = MyOtherClass
c.z = 5
c.print_x_plus_z()
assert MyOtherClass.z == 5, "instances don't share the same values!"
我用元類和管理,以獲得_init_
,print_x
和子類正常工作,但性能不工作。 任何人都可以提出更好的選擇嗎? 我使用Python 2.4及以上
MyClass()有什麼問題print_x_plus_z()'? 'c = MyOtherClass()'有什麼問題?爲什麼不直接簡單地使用Python? – 2009-11-24 16:05:19
或者在每個類之後只寫'MyClass = MyClass()'。 – 2009-11-24 16:41:06
你可能認爲這是一個大腦練習。 我只想要我可以製作的最完美的通用DSL。 如果可能,我不想寫MyClass = MyClass()或MyClass()。成員。 – 2009-11-24 16:57:10