পাইথন 2 এবং 3, হোয়াইট আউট আমদানি, তাদের ঠিকানার মাধ্যমে ফিল্টারিং অবজেক্ট
সংক্ষেপে সমাধান:
ফেরত ডিক {গুণবাচক নাম: বৈশিষ্ট্য_মূল্য} , অবজেক্ট ফিল্টার। অর্থাত{'a': 1, 'b': (2, 2), 'c': [3, 3]}
{k: val for k, val in self.__dict__.items() if not str(hex(id(val))) in str(val)}
ফিরতি তালিকা [বৈশিষ্ট্য_নাম] , অবজেক্ট ফিল্টার। অর্থাত['a', 'b', 'c', 'd']
[k for k, val in self.__dict__.items() if not str(hex(id(val))) in str(val)]
ফিরতি তালিকা [বৈশিষ্ট্য_মূল্য] , বস্তুগুলি ফিল্টার করা। অর্থাত[1, (2, 2), [3, 3], {4: 4}]
[val for k, val in self.__dict__.items() if not str(hex(id(val))) in str(val)]
ফিল্টারিং অবজেক্টস নয়
if
শর্তটি সরানো হচ্ছে । প্রত্যাবর্তন{'a': 1, 'c': [3, 3], 'b': (2, 2), 'e': <function <lambda> at 0x7fc8a870fd70>, 'd': {4: 4}, 'f': <object object at 0x7fc8abe130e0>}
{k: val for k, val in self.__dict__.items()}
দীর্ঘস্থায়ী সমাধান
যতদিন ডিফল্ট বাস্তবায়ন যেমন __repr__
ওভাররাইড করা হয় নাif
বিবৃতি ফিরে আসবে True
যদি স্মরণে অবস্থানের হেক্সাডেসিমেল উপস্থাপনা val
হয় __repr__
রিটার্ন পংক্তি।
আপনার ডিফল্ট বাস্তবায়ন সম্পর্কিত এই উত্তরটি__repr__
দরকারী খুঁজে পেতে পারেন । সংক্ষেপে:
def __repr__(self):
return '<{0}.{1} object at {2}>'.format(
self.__module__, type(self).__name__, hex(id(self)))
এর মতো একটি স্ট্রিং ফেরত দেয়:
<__main__.Bar object at 0x7f3373be5998>
প্রতিটি উপাদানের মেমরির অবস্থানটি id()
পদ্ধতিটির মাধ্যমে পাওয়া যায় ।
পাইথন ডক্স আইডি () সম্পর্কে বলেছেন:
কোনও বস্তুর "পরিচয়" ফিরিয়ে দিন। এটি একটি পূর্ণসংখ্যা যা তার জীবদ্দশায় এই বিষয়টির জন্য অনন্য এবং ধ্রুবক হওয়ার গ্যারান্টিযুক্ত। ওভারল্যাপিংবিহীন লাইফটাইমযুক্ত দুটি বস্তুর একই আইডি () মান থাকতে পারে।
সিপিথন বাস্তবায়নের বিশদ: এটি মেমরির অবজেক্টের ঠিকানা।
নিজে চেষ্টা করে দেখুন
class Bar:
def __init__(self):
self.a = 1
self.b = (2, 2)
self.c = [3, 3]
self.d = {4: 4}
self.e = lambda: "5"
self.f = object()
#__str__ or __repr__ as you prefer
def __str__(self):
return "{}".format(
# Solution in Short Number 1
{k: val for k, val in self.__dict__.items() if not str(hex(id(val))) in str(val)}
)
# Main
print(Bar())
আউটপুট:
{'a': 1, 'c': [3, 3], 'b': (2, 2), 'd': {4: 4}}
দ্রষ্টব্য :