2012-02-03 15 views
5

मैं कुछ पुराने अजगर कोड की समीक्षा कर रहा हूँ और अक्सर यह 'पैटर्न' करवाते आया:क्या यह पायथन में एक कॉपी कन्स्ट्रक्टर के बराबर है?

class Foo(object): 
    def __init__(self, other = None): 
     if other: 
      self.__dict__ = dict(other.__dict__) 

कि यह कैसे एक प्रति निर्माता आमतौर पर पायथन में कार्यान्वित किया जाता है?

+6

प्रासंगिक: http://stackoverflow.com/questions/1241148/copy-constructor-in-python –

उत्तर

4

यह एक ऑब्जेक्ट से दूसरे ऑब्जेक्ट्स को कॉपी करने का एक तरीका है। हालांकि ध्यान दें कि:

  • ऑब्जेक्ट __init__ विधि में पारित ऑब्जेक्ट में कोई प्रकार हो सकता है (ऑब्जेक्ट बनने के समान प्रकार नहीं)।
  • केवल ऑब्जेक्ट विशेषताएँ कॉपी की गई हैं (कक्षा विशेषताएँ और विधियां नहीं हैं)।
4

ध्यान दें कि विशेषताएँ कॉपी नहीं की गई हैं, वे साझा हैं।

>>> a = Foo() 
>>> a.x=[1,2,3] 
>>> b = Foo(a) 
>>> b.x[2] = 4 
>>> a.x 
[1, 2, 4] 
संबंधित मुद्दे