2011-12-13 36 views
0

例如,在C#中,我可以做以下使用反射:有沒有像Python中的那些Python 2.7中的成員具有自定義屬性的方法?

public class A 
{ 
    object obj1; 

    [MyCustumAttribute(data)] 
    public object Obj1Property 
    { get; set; } 

    public A() {} 
} 

public static void Main(string[] args) 
{ 
    Type t = typeof(a); 
    PropertyInfo[] props = t.GetProperties(); 
    attrs = props[0].GetCustomAttributes(); 

    //Do something with the properties based on their custom attributes 
} 

注意,我可以做同樣的事情用A的方法,數據成員,等等。不只是性。

有沒有辦法在Python 2.7中做同樣類型的事情?

+0

你有沒有找到答案,你做到這一點? –

+0

我沒有。我瞭解到,有時我需要在使用其他語言進行某些操作時完全重新考慮我的解決方案。我明顯在這裏用C#思考。我需要重新思考我最初想要完成的任務,並使之變成Pythonic。謝謝您的幫助。 :) –

回答

0

編輯:重新讀你的問題後,我意識到反射方面沒有解決。儘管如此,答案仍然沒有。 .NET反射似乎不涉及DLR類型(例如IronPython,IronRuby)。 python中有一種反射機制,但您可以使用它,詳情請參閱https://stackoverflow.com/a/1447529/635634

-

不是真的,但你可以排序的實現使用DevHawk's solution同樣的效果。

0

這一點有助於實現你想實現什麼python decorators(關於裝飾In this SO answer廣泛的信息)

簡單地說,他們是因爲2.4版本,讓你包裹或裝飾功能 - 爲了確定一個給定的函數是否有一個你可以嘗試使用functools庫進行評估的裝飾器。

的另一種方法,可以幫助你既然想裝飾一類是Python MetaClasses

+0

裝飾者或元類可以使用反射進行查詢嗎? –

相關問題