Bir örnek yöntemi Python bir dekoratör sınıf erişebilir?
Merhaba kabaca aşağıdaki gibi bir şey var. Temelde bir dekoratör tanımını örnek yöntemi üzerine kullanılan örnek yönteminin sınıf giriş yapmam gerek.
def decorator(view):
# do something that requires view's class
print view.im_class
return view
class ModelA(object):
@decorator
def a_method(self):
# do some stuff
pass
Kod olarak verir
AttributeError: 'function' object has no attribute 'im_class'
/- Python decorator makes function forget that it belongs to a class Get class in Python decorator - ama bu ilk parametre kapış tarafından çalışma zamanında örnek kapmak geçici bir çözüm güvenmek cevaplar benzer soru buldum. Benim durumumda bu bilgiyi kendi sınıf panoda dayalı yöntem arayacağım, gelip bir çağrı için sabırsızlanıyorum.
Teşekkür ederim.
CEVAP
Eğer Python 2.6 kullanıyorsanız veya sınıf bir dekoratör kullanabilirsiniz daha sonra, belki böyle bir şey (uyarı: denenmemiş kodu).
def class_decorator(cls):
for name, method in cls.__dict__.iteritems():
if hasattr(method, "use_class"):
# do something with the method and class
print name, cls
return cls
def method_decorator(view):
# mark the method as something that requires view's class
view.use_class = True
return view
@class_decorator
class ModelA(object):
@method_decorator
def a_method(self):
# do some stuff
pass
Yöntem dekoratör "use_class" öznitelik fonksiyonları ve yöntemleri onlar için ek meta veriler ekleyin böylece de nesneler vardır. bir ekleyerek ilgi çekici bir yöntemi işaretleri
Sınıf oluşturulduktan sonra sınıf dekoratör sonra tüm yöntemlerle gider ve işaretlenmiş bu yöntemleri konusunda ne gerekiyorsa yapar.
Eğer tüm yöntemleri etkilenen olmak istiyorsanız o zaman yöntem dekoratör dışarıda bırak ve sadece sınıf dekoratör kullanabilirsiniz.
Python sınıf farklılıkları yöntemi: il...
Python Sınıf Dekoratör...
Python: sınıf ve örnek öznitelikleri a...
Karşı sınıf değişkenleri Python örnek ...
'Eclipse içine bir proje aldıktan...