क्लास पैटर्न
ऑब्जेक्ट की विशेषताओं से मिलान करें
क्लास पैटर्न, CoddyKit पर Python Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Python Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Python Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
ऑब्जेक्टों का मिलान
क्लास पैटर्न match को किसी ऑब्जेक्ट के प्रकार की जाँच करने और उसकी विशेषताएँ एक ही चरण में निकालने देते हैं। वे किसी मामले के अंदर कन्स्ट्रक्टर कॉल जैसे दिखते हैं।
केवल प्रकार की जाँच
खाली कोष्ठकों वाला क्लास पैटर्न उस क्लास के किसी भी इंस्टेंस से मेल खाता है।
def kind(value):
match value:
case int():
return 'an integer'
case str():
return 'a string'
case _:
return 'something else'
print(kind(5))
print(kind('hi'))
print(kind([1]))नाम से विशेषताएँ कैप्चर करना
कोष्ठकों के अंदर attr=name लिखकर इंस्टेंस का मिलान करें और नामित विशेषता को किसी चर से जोड़ें।
from dataclasses import dataclass
@dataclass
class Point:
x: int
y: int
p = Point(3, 4)
match p:
case Point(x=px, y=py):
print('point at', px, py)विशिष्ट विशेषता मानों का मिलान
आप किसी विशेषता का शाब्दिक मान के बराबर होना आवश्यक कर सकते हैं। यह मामला केवल x-अक्ष पर स्थित बिंदुओं से मेल खाता है।
from dataclasses import dataclass
@dataclass
class Point:
x: int
y: int
def describe(p):
match p:
case Point(x=0, y=0):
return 'origin'
case Point(x=x, y=0):
return 'on x-axis at ' + str(x)
case Point():
return 'elsewhere'
print(describe(Point(0, 0)))
print(describe(Point(5, 0)))
print(describe(Point(1, 1)))__match_args__ के साथ क्रमिक पैटर्न
यदि कोई क्लास __match_args__ परिभाषित करती है, तो आप विशेषताओं का क्रमिक रूप से मिलान कर सकते हैं। डेटाक्लास अपने फ़ील्ड क्रम से इसे स्वचालित रूप से निर्धारित करते हैं।
from dataclasses import dataclass
@dataclass
class Point:
x: int
y: int
p = Point(3, 4)
match p:
case Point(px, py):
print(px, py)__match_args__ को मैन्युअल रूप से परिभाषित करना
सामान्य क्लास के लिए __match_args__ को एक ऐसे ट्यूपल पर सेट करें, जिसमें उन विशेषताओं के नाम हों जिन्हें आप क्रमिक रूप से उपलब्ध कराना चाहते हैं।
class Point:
__match_args__ = ('x', 'y')
def __init__(self, x, y):
self.x = x
self.y = y
match Point(1, 2):
case Point(a, b):
print(a, b)क्लास के आधार पर वितरण
क्लास पैटर्न संबंधित प्रकारों के समूह पर एक साफ़-सुथरा वितरक बनाते हैं, जिसमें प्रत्येक प्रकार को अपने मामले द्वारा सँभाला जाता है।
from dataclasses import dataclass
@dataclass
class Circle:
radius: float
@dataclass
class Square:
side: float
def area(shape):
match shape:
case Circle(radius=r):
return 3.14159 * r * r
case Square(side=s):
return s * s
print(area(Circle(2)))
print(area(Square(3)))क्लास पैटर्नों की नेस्टिंग
क्लास पैटर्न एक-दूसरे के अंदर रखे जा सकते हैं। जो फ़ील्ड स्वयं एक ऑब्जेक्ट हो, उसका मिलान किसी अन्य क्लास पैटर्न से किया जा सकता है।
from dataclasses import dataclass
@dataclass
class Point:
x: int
y: int
@dataclass
class Line:
start: Point
end: Point
line = Line(Point(0, 0), Point(3, 4))
match line:
case Line(start=Point(x=0, y=0), end=Point(x=ex, y=ey)):
print('from origin to', ex, ey)अंतर्निर्मित प्रकारों के साथ संयोजन
अंतर्निर्मित प्रकार एक ऐसे क्रमिक तर्क का समर्थन करते हैं जो मान को कैप्चर करता है। int(n) किसी int से मेल खाता है और उसे n से जोड़ता है।
def label(value):
match value:
case int(n):
return 'int ' + str(n)
case str(s):
return 'str ' + s
case _:
return 'other'
print(label(7))
print(label('hi'))क्लास पैटर्न का उपयोग कब करें
क्लास पैटर्न तब चुनें जब आप ऐसे ऑब्जेक्टों के साथ काम कर रहे हों जिनका प्रकार और विशेषता मान, दोनों तर्क को प्रभावित करते हों, जैसे इवेंट ऑब्जेक्ट, AST नोड या आकारों के पदानुक्रम। ये विस्तृत isinstance जाँचों और विशेषता तक पहुँचने की आवश्यकता को बदल देते हैं।
क्रमिक और कीवर्ड पैटर्न का मिश्रण
आप एक ही क्लास पैटर्न में क्रमिक और कीवर्ड उप-पैटर्न मिला सकते हैं, ठीक फ़ंक्शन कॉल की तरह। क्रमिक पैटर्न __match_args__ के क्रम का उपयोग करते हैं; कीवर्ड पैटर्न विशेषता का नाम स्पष्ट रूप से बताते हैं।
from dataclasses import dataclass
@dataclass
class Point:
x: int
y: int
z: int
p = Point(1, 2, 3)
match p:
case Point(x, y, z=depth):
print(x, y, depth)त्वरित जाँच
पैटर्न Point(x=0, y=y) किससे मेल खाता है?
पुनरावलोकन
आपने ऑब्जेक्ट की विशेषताओं के आधार पर मिलान करना सीखा।
ClassName()प्रकार की जाँच करता है।attr=nameविशेषताओं को जोड़ता है; शाब्दिक मान सटीक मानों की माँग करते हैं।__match_args__क्रमिक मिलान सक्षम करता है।- क्लास पैटर्न एक-दूसरे के अंदर रखे जा सकते हैं और प्रकार पदानुक्रमों पर वितरण कर सकते हैं।
एआई शिक्षक के साथ Python सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 76
- पाठ
- 320
अक्सर पूछे जाने वाले प्रश्न
क्या “क्लास पैटर्न” पाठ निःशुल्क है?
हाँ—“क्लास पैटर्न” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Python Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Python Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“क्लास पैटर्न” में मैं क्या सीखूँगा?
ऑब्जेक्ट की विशेषताओं से मिलान करें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Python Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Python Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Python Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“क्लास पैटर्न” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Python Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Python Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।