पायथन 2 और 3, वाइटआउट आयात, वस्तुओं को उनके पते द्वारा फ़िल्टर करना
संक्षेप में समाधान:
वापसी dict {ATTRIBUTE_NAME: ATTRIBUTE_VALUE} , फ़िल्टर वस्तुओं। अर्थात{'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()
विधि के ।
पायथन डॉक्सआईडी के बारे में कहना है:
किसी वस्तु की "पहचान" लौटाएं। यह एक पूर्णांक है जो अपने जीवनकाल के दौरान इस वस्तु के लिए अद्वितीय और निरंतर होने की गारंटी है। गैर-अतिव्यापी जीवनकाल वाली दो वस्तुओं में एक ही आईडी () मूल्य हो सकता है।
CPython कार्यान्वयन विवरण: यह मेमोरी में ऑब्जेक्ट का पता है।
अपने आप से कोशिश करो
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}}
नोट :