我發現前面討論過在(Iron)Python中定義靜態方法,但是,我沒有找到關於靜態屬性的任何信息。我認爲你可以明確地創建靜態屬性,因爲屬性只是.NET CLR的方法,這就是我在下面的代碼中所做的,但是,它看起來像通過調用靜態屬性「StaticField」我無法訪問靜態字段「__staticField」它被鏈接到,而我得到一個引用的屬性存儲? ,但如果使用用作Get屬性的靜態方法「getStaticField」,它會正確地給我值「2」。如何定義IronPython的靜態屬性?
所以問題是:你能在(Iron)Python中定義靜態屬性嗎?以及如何使用它們來獲取值而不是對屬性方法的引用?
在此先感謝。
class Test(object):
__instanceField = 0
__staticField = 0
# Instance Property (read-only)
def getInstanceField(self):
return self.__instanceField
InstanceField = property(getInstanceField, None, None)
# Static Property (read-only)
@staticmethod
def getStaticField():
return Test.__staticField
StaticField = property(getStaticField, None, None)
# Instance Method
def instanceMethod(self, n):
self.__instanceField += 1
print 'instanceMethod', n
# Static Method
@staticmethod
def staticMethod(n):
Test.__staticField += 1
print 'staticMethod', n
# Calling Static Methods
Test.staticMethod(5)
Test.staticMethod(10)
# Calling Instance Methods
t = Test()
t.instanceMethod(5)
t.instanceMethod(10)
print 'InstanceProperty', t.InstanceField
#prints 2
print 'StaticProperty', Test.StaticField
#prints: <property object at 0x000000000000002B>
print 'StaticPropertyMethod', Test.getStaticField()
#prints 2
我想我發現了什麼問題「可以」... 問題似乎是,StaticProperty = property(getStaticField,none,none)將獲取Getter參數作爲實例方法,這就是爲什麼當我打電話時它後來它給我屬性對象在0x0000 ... 事情是,它不允許我分配一個獲取作爲靜態: StaticField =屬性(Test.getStaticField,無,無) 錯誤:全局測試未定義。 –