Python Constructors
In this page:
class ClassName:
def __init__(self, parameter):
self.attribute = parameter
object_name = ClassName(argument)
Constructor क्या है?
Constructor वह method है जिसे Python object बनते ही अपने-आप call करता है, और Python में वह __init__ है — नाम के बावजूद, यह object allocate नहीं करता (वह पर्दे के पीछे __new__ करता है), यह बस पहले से मौजूद object के attributes को initialize करता है।
उदाहरण: What is a Constructor?
class Dog:
def __init__(self): # __init__ runs automatically when a Dog is created
print("A new dog is created")
Dog()
Default Constructor
एक constructor जो सिर्फ self लेता है और कोई और parameter नहीं, हर नए object को बिल्कुल वही starting values देता है, जो simple cases के लिए ठीक है पर इसका मतलब है कि आप creation के समय object को customize नहीं कर सकते — उदाहरण के लिए हर Dog() एक जैसे नाम से शुरू होता।
उदाहरण: Default Constructor
class Dog:
def __init__(self):
self.name = "Unnamed" # every Dog starts with the same fixed name
d = Dog()
print(d.name)
Parameterized Constructor
self के अलावा extra parameters accept करना (def __init__(self, name, breed):) class के हर call को अपनी values देने देता है, इसलिए Dog(Rex, Labrador) और Dog(Milo, Poodle) एक ही blueprint से genuinely अलग objects बन जाते हैं।
उदाहरण: Parameterized Constructor
class Dog:
def __init__(self, name, breed): # extra parameters let each call customize the object
self.name = name
self.breed = breed
rex = Dog("Rex", "Labrador")
print(rex.name, rex.breed)
Default Parameter Values
किसी constructor parameter को default value देना (def __init__(self, name=Unnamed):) उस argument को optional बना देता है — जो callers नाम नहीं पास करते उन्हें fallback मिलता है, जो पास करते हैं वे उसे override कर देते हैं, बिना दो अलग constructors की ज़रूरत के।
उदाहरण: Default Parameter Values
class Dog:
def __init__(self, name="Unnamed"): # default makes the name argument optional
self.name = name
print(Dog().name) # uses the default
print(Dog("Rex").name) # overrides the default
self की भूमिका
self उस specific object को दर्शाता है जो अभी बन रहा है या जिस पर काम हो रहा है, इसीलिए __init__ के अंदर 'self.name = name' पास की गई value को किसी shared या global variable में नहीं, उसी particular instance पर store करता है — हर method को यह जानने के लिए self चाहिए कि वह किस object पर काम कर रहा है।
उदाहरण: The Role of self
class Dog:
def __init__(self, name):
self.name = name # self refers to this specific Dog being created
d = Dog("Rex")
print(d.name)
Chapter Quiz — Complete all 11 topics to unlock
0/11 topics done
Complete these topics first: