[Tutor] use of dict() function
Alex Kleider
alexkleider at gmail.com
Sun Jun 2 22:44:35 EDT 2024
#!/usr/bin/env python3
"""
Question:
I created a class which I initially coded as in Rec0.
I then read[1] that calling dict(mapping) returns a new dict
essentially providing the functionality of my class (except
for the call-ability feature.)
The interesting thing is that calling dict(mapping) within a class
definition seems to result in different behavior than when called
elsewhere.
Is there an explanation???
The following code hopefully illustrates what I'm on about.
Cheers,
Alex Kleider
[1]: https://www.thepythoncodingstack.com/p/python-dict-is-more-versatile-than-you-may-think
"""
class Rec0(dict):
def __init__(self, rec):
for key, value in rec.items():
self[key] = value
def __call__(self, fstr):
return fstr.format(**self)
class Rec1(dict):
def __init__(self, rec):
self = dict(rec)
def __call__(self, fstr):
return fstr.format(**self)
def test():
d0 = {"husband": "Alex", "wife": "June",
"daughter": "Tanya", "son": "Kelly", }
d1 = dict(d0)
d1["grand_daughter"] = "Isabella"
print("Using dict function directly...")
print(" d1 should (and does) contain five entries as follows:")
print(d1); print()
d0 = {"husband": "Alex", "wife": "June",
"daughter": "Tanya", "son": "Kelly", }
d1 = Rec0(d0)
d1["grand_daughter"] = "Isabella"
print("Using Rec0 (which doesn't use the dict() function)...")
print(" d1 also contain five entries as follows:")
print(d1); print()
d0 = {"husband": "Alex", "wife": "June",
"daughter": "Tanya", "son": "Kelly", }
d1 = Rec1(d0)
d1["grand_daughter"] = "Isabella"
print("Using Rec1 (which uses the dict() function)...")
print(" d1 should (but doesn't) contain the five entries:")
print(d1); print()
if __name__ == "__main__":
test()
More information about the Tutor
mailing list