রবের উত্তর (সবচেয়ে উপরে ভোট দেওয়া) সঠিক। আমি যুক্ত করতে চাই যে কিছু পরিস্থিতিতে আইডি ব্যবহার করা দরকারী কারণ এটি বস্তুর তুলনা করতে এবং কোন বস্তুগুলি আপনার অবজেক্টগুলিকে উল্লেখ করে এটি সন্ধান করার অনুমতি দেয়।
পরবর্তীকালে আপনাকে উদাহরণস্বরূপ অদ্ভুত বাগগুলি ডিবাগ করতে সহায়তা করে যেখানে পরিবর্তনীয় বস্তুগুলি ক্লাস বলতে প্যারামিটার হিসাবে পাস করা হয় এবং একটি ক্লাসে স্থানীয় ভার্সে বরাদ্দ করা হয়। এই বস্তুগুলিকে পরিবর্তিতকরণ একটি শ্রেণিতে ভারগুলি রূপান্তরিত করবে। এটি নিজেকে অদ্ভুত আচরণে প্রকাশ করে যেখানে একাধিক জিনিস একই সাথে পরিবর্তিত হয়।
সম্প্রতি পাইথন / টিন্টার অ্যাপ্লিকেশনটির সাথে আমার এই সমস্যাটি হয়েছিল যেখানে একটি পাঠ্য প্রবেশের ক্ষেত্রের পাঠ্য সম্পাদনা করার সাথে আমি লেখার সাথে সাথে অন্য পাঠ্যকে পরিবর্তন করেছি :)
এই উল্লেখগুলি যেখানে রয়েছে তা সন্ধান করার জন্য আপনি কীভাবে ফাংশন আইডি () ব্যবহার করতে পারেন তার একটি উদাহরণ এখানে। সমস্ত উপায়ে এটি কোনও সম্ভাব্য ক্ষেত্রে আচ্ছাদন করার সমাধান নয়, তবে আপনি ধারণাটি পাবেন। আবার আইডিগুলি পটভূমিতে ব্যবহৃত হয় এবং ব্যবহারকারী সেগুলি দেখতে পায় না:
class democlass:
classvar = 24
def __init__(self, var):
self.instancevar1 = var
self.instancevar2 = 42
def whoreferencesmylocalvars(self, fromwhere):
return {__l__: {__g__
for __g__ in fromwhere
if not callable(__g__) and id(eval(__g__)) == id(getattr(self,__l__))
}
for __l__ in dir(self)
if not callable(getattr(self, __l__)) and __l__[-1] != '_'
}
def whoreferencesthisclassinstance(self, fromwhere):
return {__g__
for __g__ in fromwhere
if not callable(__g__) and id(eval(__g__)) == id(self)
}
a = [1,2,3,4]
b = a
c = b
democlassinstance = democlass(a)
d = democlassinstance
e = d
f = democlassinstance.classvar
g = democlassinstance.instancevar2
print( 'My class instance is of', type(democlassinstance), 'type.')
print( 'My instance vars are referenced by:', democlassinstance.whoreferencesmylocalvars(globals()) )
print( 'My class instance is referenced by:', democlassinstance.whoreferencesthisclassinstance(globals()) )
আউটপুট:
My class instance is of <class '__main__.democlass'> type.
My instance vars are referenced by: {'instancevar2': {'g'}, 'classvar': {'f'}, 'instancevar1': {'a', 'c', 'b'}}
My class instance is referenced by: {'e', 'd', 'democlassinstance'}
পরিবর্তনশীল নামগুলিতে বোঝার নামগুলি নাম কলিশগুলি প্রতিরোধ করতে ব্যবহৃত হয়। ফাংশনগুলি "কোথাও" আর্গুমেন্ট ব্যবহার করে যাতে আপনি তাদের জানতে পারেন যে কোথায় রেফারেন্সগুলি অনুসন্ধান করা শুরু করবেন। এই যুক্তি একটি ফাংশন দ্বারা পূর্ণ যা প্রদত্ত নেমস্পেসে সমস্ত নাম তালিকাভুক্ত করে। গ্লোবালস () এমন একটি ফাংশন।