Code Explanation:
Class Definition
class Product:
This defines a new class named Product.
The class will represent a product that has a price and some logic around it.
Constructor (__init__) Method
def __init__(self, p):
self._price = p
__init__ is the constructor — it runs automatically when you create a new Product object.
It takes one argument besides self: p, which represents the base price.
self._price = p:
Stores the value of p in an attribute called _price.
The single underscore _price is a convention meaning “internal use” (protected-style attribute).
Property Decorator
@property
def price(self):
return self._price * 2
@property turns the price method into a read-only attribute.
That means you can access price like p.price instead of p.price().
Inside the method:
return self._price * 2
It doesn’t return the raw _price.
Instead, it returns double the stored price.
This is a form of encapsulation + computed property:
the internal value is _price, but the external visible value is _price * 2.
Creating an Object
p = Product(40)
Creates an instance p of the Product class.
Calls __init__(self, p) with p = 40.
Inside __init__, _price becomes 40.
So now: p._price == 40.
Accessing the Property
print(p.price)
Accessing p.price triggers the @property method price().
It calculates: self._price * 2 → 40 * 2 = 80.
print outputs:
80
Final Output
80


0 Comments:
Post a Comment