2015-10-09 9 views
5

कुछ (ज्यादातर कार्यात्मक) भाषाओं में आप कुछ इस तरह कर सकते हैं:आप पाइथन में एक प्रकार का उपनाम कैसे करते हैं?

type row = list(datum) 

या

type row = [datum] 

तो है कि हम इस तरह बातें निर्माण कर सकते हैं:

type row = [datum] 
type table = [row] 
type database = [table] 

वहाँ एक है पाइथन में ऐसा करने का तरीका? आप इसे कक्षाओं का उपयोग करके कर सकते हैं, लेकिन पाइथन में कुछ कार्यात्मक पहलू हैं इसलिए मैं सोच रहा था कि यह एक आसान तरीका हो सकता है।

उत्तर

2

पायथन गतिशील रूप से टाइप किया गया है। जबकि लूकाज़ आर का जवाब टाइप संकेत उद्देश्यों के लिए सही है (जिसे बदले में स्थिर विश्लेषण और लिनटिंग के लिए उपयोग किया जा सकता है), कड़ाई से बोलते हुए, को की आवश्यकता नहीं है ताकि यह काम करने के लिए कुछ भी किया जा सके। बस इस तरह अपनी सूची का निर्माण और उन्हें चर को असाइन:

foo_table = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 
bar_table = ... 
foo_database = [foo_table, bar_table, ...] 

प्रकार संकेत सही मायने में उपयोगी होते हैं, कैसे अपने कोड बर्ताव करता है, क्योंकि वे दस्तावेज़ मदद कर सकते हैं, और वे दोनों स्थिर और रनटाइम पर जाँच की जा सकती। लेकिन को मजबूर करने के लिए कुछ भी नहीं है यदि आप असुविधाजनक हैं तो ऐसा करने के लिए।

9

पाइथन 3.5 के बाद से आप typing मॉड्यूल का उपयोग कर सकते हैं।

का हवाला देते हुए डॉक्स, एक प्रकार उर्फ ​​उर्फ ​​करने के लिए प्रकार बताए द्वारा परिभाषित किया गया है: PEP483 और PEP484:

Vector = List[float] 

आप Peps से परिचित हो सकते हैं अजगर में प्रकार को लागू करने के बारे में अधिक जानने के लिए।

पाइथन ऐतिहासिक रूप से मजबूत टाइपिंग के बजाय बतख-टाइपिंग का उपयोग कर रहा था और 3.5 रिलीज से पहले प्रकारों को लागू करने के तरीके में अंतर्निहित नहीं था।

+0

यह वही है जो मैं ढूंढ रहा था, धन्यवाद! – Wysaard

+1

ध्यान दें कि संकेत प्रकार स्थिर विश्लेषण और लिंटर्स द्वारा उपयोग के लिए हैं। रन-टाइम प्रकार की जांच के लिए संकेतों का उपयोग नहीं किया जाता है। न ही वे अनुकूलन के लिए उपयोग किया जाता है। यह भी ध्यान रखें कि संकेत उनके शिशुओं में हैं। पायथन में लगभग कोई भी कोड टाइप संकेत नहीं देता है और उनसे निपटने के लिए कोई विश्लेषण उपकरण विकसित नहीं किया गया है (जहां तक ​​मुझे पता है)। –

+0

पीईपी 484 के [गैर-लक्ष्य अनुभाग] (https://www.python.org/dev/peps/pep-0484/#non-goals) से: "प्रस्तावित टाइपिंग मॉड्यूल में रनटाइम प्रकार के लिए कुछ बिल्डिंग ब्लॉक होंगे जांच - विशेष रूप से get_type_hints() फ़ंक्शन - तृतीय रन पैकेज को विशिष्ट रनटाइम प्रकार की जांच कार्यक्षमता को लागू करने के लिए विकसित किया जाना चाहिए, उदाहरण के लिए सजावटी या मेटाक्लास का उपयोग करना। प्रदर्शन अनुकूलन के लिए प्रकार संकेतों का उपयोग पाठक के लिए एक अभ्यास के रूप में छोड़ दिया जाता है। " –

0

row = lambda datum: list(datum) जैसे कुछ के बारे में कैसे? वहां कोई असली प्रकार आत्मनिरीक्षण समर्थन नहीं है, लेकिन यह "एलियासिंग" प्रकारों का एक बहुत ही सरल तरीका है जो बतख टाइपिंग के लिए पाइथन के शौकीनता को देखते हैं। और यह कार्यात्मक है! किंडा।

+0

यदि आप वास्तव में इस तरह की चीज करना चाहते हैं, तो बस 'row = list' का उपयोग करें। चीजों को जटिल करने की कोई ज़रूरत नहीं है। – Kevin

+0

@ केविन जो 'पंक्ति' के लिए काम करता है, हाँ, लेकिन 'टेबल' या 'डेटाबेस' के लिए नहीं। – JAB

+0

वास्तव में? 'तालिका()' का हस्ताक्षर क्या है? यह 'सूची()' से अलग कैसे है? – Kevin

संबंधित मुद्दे

 संबंधित मुद्दे