Code Explanation:
1. Class Definition
class Counter:
Explanation:
A class named Counter is created.
It will contain a method that keeps track of how many times it is called.
2. Method Definition
def count(self):
Explanation:
count() is an instance method.
self refers to the current object (c).
This method will be called multiple times.
3. Checking if Function Attribute Exists
if not hasattr(self.count, "n"):
Explanation:
self.count refers to the method object itself.
hasattr(self.count, "n") checks whether the method already has an attribute named n.
On the first call, n does NOT exist → condition is True.
4. Creating a Function Attribute
self.count.n = 0
Explanation:
A new attribute n is attached to the function object count.
This is not:
an instance variable
a class variable
It is a function (method) attribute.
5. Incrementing the Function Attribute
self.count.n += 1
Explanation:
Increases the value of n by 1.
Since n belongs to the method, its value is remembered between calls.
6. Returning the Value
return self.count.n
Explanation:
Returns the current value of the function attribute n.
7. Object Creation
c = Counter()
Explanation:
Creates an object c of class Counter.
8. First Method Call
c.count()
What happens:
n does NOT exist → set to 0
Increment → n = 1
Returns 1
9. Second Method Call
c.count()
What happens:
n already exists
Skip initialization
Increment → n = 2
Returns 2
10. Print Statement
print(c.count(), c.count())
Explanation:
First call prints 1
Second call prints 2
FINAL OUTPUT
1 2


0 Comments:
Post a Comment