खोज का एक बहुत बाद, मैंने पाया है वहाँ एक मौजूदा उदाहरण के लिए एक समयबद्ध विधि या अनबाउंड वर्ग विधियों को जोड़ने के लिए कुछ तरीके वस्तुओं रहे हैं किपायथन में किसी मौजूदा ऑब्जेक्ट में कोई विधि जोड़ने का कोई शानदार तरीका?
इस तरह के तरीके दृष्टिकोण नीचे कोड ले जा रहा है शामिल हैं।
import types
class A(object):
pass
def instance_func(self):
print 'hi'
def class_func(self):
print 'hi'
a = A()
# add bound methods to an instance using type.MethodType
a.instance_func = types.MethodType(instance_func, a) # using attribute
a.__dict__['instance_func'] = types.MethodType(instance_func, a) # using __dict__
# add bound methods to an class
A.instance_func = instance_func
A.__dict__['instance_func'] = instance_func
# add class methods to an class
A.class_func = classmethod(class_func)
A.__dict__['class_func'] = classmethod(class_func)
क्या मुझे परेशान करता है समारोह का नाम, instance_func
या class_func
दो बार टाइपिंग, है।
क्या फ़ंक्शन का नाम टाइप किए बिना किसी मौजूदा फ़ंक्शन को किसी वर्ग या इंस्टेंस में जोड़ने का कोई आसान तरीका है?
उदाहरण के लिए, A.add_function_as_bound_method(f)
दूर बहुत सुरुचिपूर्ण तरीका समारोह पहले से ही __name__
विशेषता है के बाद से एक उदाहरण या वर्ग के लिए एक मौजूदा समारोह को जोड़ने के लिए किया जाएगा।