[अजगर 3]numpy.ndarray: एक "सामान्य" वर्ग
को बदलने मैं ndarray
पसंद है, लेकिन मैं इसे कष्टप्रद उपयोग करने के लिए लगता है।
यहां एक समस्या है जिसका सामना करना पड़ता है। मैं class Array
लिखना चाहता हूं जो ndarray की अधिकांश कार्यक्षमता का उत्तराधिकारी होगा, लेकिन तत्काल होने का केवल एक ही तरीका है: एक निश्चित आकार की शून्य-भरे सरणी के रूप में। मैं लिखने के लिए उम्मीद कर रहा था:
class Array(numpy.ndarray):
def __init__(size):
# What do here?
मैं एक शून्य से भरे सरणी बनाने के लिए कुछ मानकों के साथ super().__init__
कॉल करना चाहते हैं, लेकिन जब से ndarray
एक वैश्विक समारोह numpy.zeros
का उपयोग करता है (न कि निर्माता से) यह काम नहीं करेगा एक शून्य भरे सरणी बनाने के लिए।
सवाल:
क्यों कई मामलों में वैश्विक (मॉड्यूल) के बजाय कंस्ट्रक्टर्स कार्यों का उपयोग ndarray करता है? अगर मैं ऑब्जेक्ट उन्मुख सेटिंग में उनका पुन: उपयोग करने की कोशिश कर रहा हूं तो यह एक बड़ी परेशानी है।
मुझे
class Array
को परिभाषित करने का सबसे अच्छा तरीका क्या है? क्या मुझे ज़ीरो के साथndarray
मैन्युअल रूप से पॉप्युलेट करना चाहिए, याzeros
फ़ंक्शन का पुन: उपयोग करने का कोई तरीका है?
मुझे नहीं लगता कि आप अपनी खुद की कक्षा क्यों बनाना चाहते हैं। 'Numpy.zeros()' फैक्ट्री फ़ंक्शन पर क्या लाभ है? अगर आपको नाम पसंद नहीं है, तो बस इसका नाम बदलें, जैसे 'create_array = numpy.zeros'। –
मुझे अब यकीन नहीं है कि एक फायदा है। शायद मैं कारखाने के समारोह में प्रयोग नहीं किया जाता है। मुझे इसके बारे में सोचना होगा। – max
@Sven Marnach: मैं इस सामान्य विषय पर कई लिंक पाया: http://stackoverflow.com/questions/628950/constructors-vs-factory-methods http://stackoverflow.com/questions/2959871/factory -vs-उदाहरण-कंस्ट्रक्टर्स http://stackoverflow.com/questions/4617311/creation-of-objects-constructors-or-static-factory-methods अन्य भाषाओं से अजगर को कुछ भी नहीं है विशिष्ट है, लेकिन सामान्य टिप्पणी करने लगते हैं लागू करें। और जहां तक मैं कह सकता हूं, कारखाने के कार्यों के लिए वास्तव में कोई नुकसान नहीं है (मेरी निजी वरीयता के अलावा)। – max