में उदाहरण विधियों में विशेषताओं को जोड़ना मैं अपनी कक्षाओं में से किसी एक में एक विधि विधि में एक विशेषता जोड़ना चाहता हूं। मैंने this question में दिए गए उत्तर की कोशिश की, लेकिन यह उत्तर केवल कार्यों के लिए काम करता है - जहां तक मैं कह सकता हूं।)पायथन
class foo(object):
...
def bar(self):
self.bar.counter += 1
return self.bar.counter
bar.counter = 1
...
लेकिन, जब मैं foo फोन() बार (मैं:
AttributeError: 'instancemethod' object has no attribute 'counter'
मेरा लक्ष्य।
एक उदाहरण के रूप में, मैं की तरह कुछ करने के लिए सक्षम होने के लिए चाहते हैं ऐसा करने में यह प्रभावित करने का प्रयास करना है कि 'काउंटर' चर बार() विधि के लिए स्थानीय है, और मेरे क्लास नेमस्पेस को अभी तक एक और विशेषता के साथ छेड़छाड़ करने से बचने के लिए है। क्या इसे करने का कोई तरीका है? क्या ऐसा करने का एक और अधिक पागल तरीका है?
class foo(object):
def __init__(self):
self.counter = 0
def bar(self):
self.counter += 1
return self.counter
डेटा मान अटैच किया जा रहा कार्यों के लिए सीधे निश्चित तौर पर गैर-pythonic है:
'counter' श्रेणी स्तर (सभी उदाहरणों वर्तमान गिनती का हिस्सा), या उदाहरण के स्तर (प्रत्येक उदाहरण 1 से शुरू होता है) हो सकता है? –
'counter' उदाहरण स्तर – sbell
होना चाहिए यह संबंधित प्रश्न सहायक हो सकता है (या नहीं) सहायक हो सकता है: http://stackoverflow.com/questions/7034063/adding-attributes-the-instancemethods-in-python –