আমি মধ্যে পার্থক্য বুঝতে copy
বনাম deepcopy
কপি মডিউলে। আমি সফলভাবে ব্যবহার করেছি copy.copy
এবং এর copy.deepcopy
আগেও, তবে এটি প্রথম এবং প্রথমবারের মধ্যে আমি পদ্ধতিগুলি __copy__
এবং __deepcopy__
পদ্ধতিগুলি ওভারলোডিং সম্পর্কে আসলেই চলেছি । আমি ইতিমধ্যে প্রায় googled এবং মাধ্যমে লাগছিল থাকেন বিল্ট-ইন পাইথন মডিউল দৃষ্টান্ত জন্য চেহারা __copy__
এবং __deepcopy__
ফাংশন (যেমন sets.py
, decimal.py
এবং fractions.py
), কিন্তু আমি এখনও না 100% নিশ্চিত আমি এটা ঠিক পেয়েছেন আছি।
এখানে আমার পরিস্থিতি:
আমার একটি কনফিগারেশন অবজেক্ট রয়েছে। প্রাথমিকভাবে, আমি মানগুলির একটি ডিফল্ট সেট সহ একটি কনফিগারেশন অবজেক্ট ইনস্ট্যান্ট করতে যাচ্ছি। এই কনফিগারেশনটি একাধিক অন্যান্য অবজেক্টের কাছে হস্তান্তর করা হবে (সমস্ত কনফিগারেশন একই কনফিগারেশন দিয়ে শুরু হয় তা নিশ্চিত করতে)। তবে, একবার ব্যবহারকারীর মিথস্ক্রিয়া শুরু হয়ে গেলে, প্রতিটি বস্তুর একে অপরের কনফিগারেশনগুলিকে প্রভাবিত না করেই তার কনফিগারেশনগুলি স্বাধীনভাবে টুইঙ্ক করা দরকার (যা আমাকে বলে যে আমার প্রাথমিক কনফিগারেশনটির ডিপকপিসগুলি চারপাশে আনতে হবে)।
এখানে একটি নমুনা অবজেক্ট:
class ChartConfig(object):
def __init__(self):
#Drawing properties (Booleans/strings)
self.antialiased = None
self.plot_style = None
self.plot_title = None
self.autoscale = None
#X axis properties (strings/ints)
self.xaxis_title = None
self.xaxis_tick_rotation = None
self.xaxis_tick_align = None
#Y axis properties (strings/ints)
self.yaxis_title = None
self.yaxis_tick_rotation = None
self.yaxis_tick_align = None
#A list of non-primitive objects
self.trace_configs = []
def __copy__(self):
pass
def __deepcopy__(self, memo):
pass
আমাকে সঠিক আচরণ নিশ্চিত করতে এবং দেওয়ার জন্য এই অবজেক্টের পদ্ধতি copy
ও deepcopy
পদ্ধতিগুলি প্রয়োগ করার সঠিক উপায় কী ?copy.copy
copy.deepcopy