नीचे दिया गया उदाहरण पायथन 2.7 पर एक आरईएसटी डेटाबेस ड्राइवर से है।getattr() स्वयं से धीमा क्यों है .__ dict __।() प्राप्त करें?
नीचे __setattr__
विधि में, अगर मैं बाहर टिप्पणी की getattr()
लाइन का उपयोग करें, यह कम कर देता है 230.
करने के लिए 600 आर पी एस से वस्तु इन्स्टेन्शियशन प्रदर्शन क्यों getattr()
इतना इस मामले में self.__dict__.get()
की तुलना में धीमी है?
class Element(object):
def __init__(self, client):
self._client = client
self._data = {}
self._initialized = True
def __setattr__(self, key, value):
#_initialized = getattr(self, "_initialized", False)
_initialized = self.__dict__.get("_initialized", False)
if key in self.__dict__ or _initialized is False:
# set the attribute normally
object.__setattr__(self, key, value)
else:
# set the attribute as a data property
self._data[key] = value
एक तरफ ध्यान दें, यदि आपके पास ऐसा प्रदर्शन अंतर है, तो स्थानीय चर में कैश 'self .__ dict__' करें - यहां तक कि केवल दो तक पहुंच के लिए। ('__setattr__' की शुरुआत में' dict_ = self .__ dict__') – jsbueno