Friday, 20 March 2026

Python Coding challenge - Day 1095| What is the output of the following Python Code?



Code Explanation


๐Ÿ”น 1️⃣ Defining Descriptor Class D

class D:

Creates a class D

This class will act as a descriptor


๐Ÿ”น 2️⃣ Defining __get__

def __get__(self, obj, objtype):

    return 100

Called when attribute is accessed

Always returns 100

Parameters:

obj → instance (a)

objtype → class (A)


๐Ÿ”น 3️⃣ Defining __set__

def __set__(self, obj, value):

    obj.__dict__['x'] = value

Called when attribute is assigned

Stores value in instance dictionary

Example:

a.x = 5

would store:

a.__dict__['x'] = 5


๐Ÿ”น 4️⃣ Defining Class A

class A:

Creates class A


๐Ÿ”น 5️⃣ Assigning Descriptor to Class Attribute

x = D()

x is now a descriptor object

Stored in class A

Internally:

A.x → descriptor


๐Ÿ”น 6️⃣ Creating Object

a = A()

Creates instance a

Initially:

a.__dict__ = {}


๐Ÿ”น 7️⃣ Directly Modifying Instance Dictionary

a.__dict__['x'] = 5

Now:

a.__dict__ = {'x': 5}

⚠ Important:

This bypasses __set__

Still creates an instance attribute


๐Ÿ”น 8️⃣ Accessing a.x

print(a.x)

Now Python performs attribute lookup.

๐Ÿ” Lookup Order

Python checks in this order:

1️⃣ Data descriptor → ✅ FOUND

2️⃣ Instance dictionary → skipped

3️⃣ Class → skipped


๐Ÿ”น 9️⃣ Descriptor Takes Control


Since x is a data descriptor, Python calls:


D.__get__(descriptor, a, A)


Inside:


return 100

๐Ÿ”น ๐Ÿ”ฅ Important Observation


Even though:


a.__dict__['x'] = 5


It is ignored because:


๐Ÿ‘‰ Data descriptor has higher priority


Final Output:

100 

Book:  500 Days Python Coding Challenges with Explanation


0 Comments:

Post a Comment

Popular Posts

Categories

100 Python Programs for Beginner (119) AI (223) Android (25) AngularJS (1) Api (7) Assembly Language (2) aws (28) Azure (9) BI (10) Books (262) Bootcamp (1) C (78) C# (12) C++ (83) Course (86) Coursera (300) Cybersecurity (29) data (5) Data Analysis (27) Data Analytics (20) data management (15) Data Science (329) Data Strucures (16) Deep Learning (135) Django (16) Downloads (3) edx (21) Engineering (15) Euron (30) Events (7) Excel (19) Finance (10) flask (4) flutter (1) FPL (17) Generative AI (66) Git (10) Google (50) Hadoop (3) HTML Quiz (1) HTML&CSS (48) IBM (41) IoT (3) IS (25) Java (99) Leet Code (4) Machine Learning (264) Meta (24) MICHIGAN (5) microsoft (11) Nvidia (8) Pandas (13) PHP (20) Projects (32) pytho (1) Python (1266) Python Coding Challenge (1088) Python Mistakes (50) Python Quiz (448) Python Tips (5) Questions (3) R (72) React (7) Scripting (3) security (4) Selenium Webdriver (4) Software (19) SQL (46) Udemy (17) UX Research (1) web application (11) Web development (8) web scraping (3)

Followers

Python Coding for Kids ( Free Demo for Everyone)