"Yardım" için kullanılan metin, gerçekten bir nesnenin "__doc__
" özniteliğidir. Sorun, sahip olduğunuz nesneye bağlı olarak, __doc__
özniteliğini ayarlayamazsınız. Yalnızca __getattr__
döner bir şekilde kurulu docstring'ini hae yaparsan o shure almalısınız -
sensin gerekenler ise "help(object.attr)
" biraz daha kolay (ve değil help(object)
size mümkün olan tüm özelliklerini gösterir) çalışmak. "O çalışmıyor" beri
Sana bu snippet'te gibi bazı işlev çağrısı iç sonuçlarını iade tahmin ediyorum:
def __getattr__(self, attr):
if attr == "foo":
#function "foo" returns an integer
return foo()
...
sadece kendisini fonksiyonu "foo" döneceğini, onu çağırmadan, normalde docstring görüntülenir. ne yapılabilir
dinamik olarak oluşturulan sınıf wich bir nesne olarak __getattr__
dönüş değeri sarılmasıdır uygun docstring'ini içeriyor
- yani, böyle somethong kullanmayı deneyin:
def __getattr__(self, attr):
if attr == "foo":
#function "foo" returns an (whatever object)
result = foo()
res_type = type(result)
wrapper_dict = res_type.__dict__.copy()
wrapper_dict["__doc__"] = foo.__doc__ #(or "<desired documentation for this attribute>")
new_type = type(res_type.__name__, (res_type,), wrapper_dict)
# I will leave it as an "exercise for the reader" if the
# constructor of the returned object can't take an object
# of the same instance (python native data types, like int, float, list, can)
new_result = new_type(result)
elif ...:
...
return new_result
Bu çalışması gerekir - olmadıkça İlk etapta hel'in neden çalışmadığına dair yanlışlarım var - eğer durum buysa, lütfen __getattr__
'dan ne döndüğünüze dair bir örnek verin.
Thannks, benim durumumda çalışıyor. __getattr__ içindeki tüm değerler yerel python veri türlerini döndürür. –