अनिश्चित के लिए कन्वेंशन संकेत - मैं उन्हें __init__
निर्माता तर्क के भीतर कर रहा हूँ की तरह यहां देखी गई:प्रकार उदाहरण चर अजगर प्रकार इशारा उदाहरण चर के लिए अजगर सम्मेलन की
class LoggedVar(Generic[T]):
def __init__(self, value: T, name: str, logger: Logger) -> None:
self.name = name
self.logger = logger
self.value = value`
उपरोक्त लिंक पर क्लिक करने के लिए कोड का टुकड़ा: https://docs.python.org/3/library/typing.html#user-defined-generic-types
लेकिन मैं यह भी पीईपी __init__
तर्क के भीतर इस तरह के (नीचे टुकड़ा) के रूप में व्याख्या उदाहरण चर के सम्मेलनों और उसके बाद भी कर रही है प्रकार हिंट देखें:
class BasicStarship:
captain: str = 'Picard' # instance variable with default
damage: int # instance variable without default
stats: ClassVar[Dict[str, int]] = {} # class variable`
def __init__(self, damage: int, captain: str = None):
self.damage = damage
if captain:
self.captain = captain # Else keep the default
अन्त में, बाद में PEP526 लेख में पर वे कहते हैं कि एक सुविधा और सम्मेलन के लिए निम्न कर सकते हैं:
class Box(Generic[T]):
def __init__(self, content):
self.content: T = content
यूआरएल दो के लिए ऊपर कोड के टुकड़े: https://www.python.org/dev/peps/pep-0526/#class-and-instance-variable-annotations
तो इन सम्मेलनों में से एक है दूसरों की तुलना में बेहतर/अधिक व्यापक रूप से स्वीकार्य है कि मुझे चिपकने की कोशिश करनी चाहिए (बेहतर पठनीयता आदि ..)?
मुझे अब तक पीईपी 526 से अनजान था; धन्यवाद। – chepner
दूसरे उदाहरण में 'कप्तान' और 'क्षति' उदाहरण चर क्यों हैं? क्या वे कक्षा चर भी नहीं हैं? या यह तथ्य है कि वे इनिट विधि में उन्हें आवृत्ति चर बनाने के लिए बदल रहे हैं? अगर मेरे पास एक सूची होगी, और इसे 'list.append()' के साथ बदल देगा कि परिवर्तन सभी मामलों में साझा किया जाएगा, तो यह अभी भी एक वर्ग चर होगा। – Asara