How do I write a no-op or dummy class in Python? -


मान लें कि मेरे पास ऐसा कोड है:

  foo = fooFactory.create () < / Code>  

विभिन्न कारणों से, fooFactory.create () Foo का एक उदाहरण बनाने में विफल हो सकता है

अगर ऐसा होता है, तो मुझे fooFactory.create () चाहिए एक डमी / नो-ऑप ऑब्जेक्ट वापस करने के लिए यह ऑब्जेक्ट पूरी तरह से निष्क्रिय होना चाहिए - कोई भी बात नहीं है कि इसका उपयोग कैसे किया जाता है, इसे कुछ भी नहीं करना चाहिए या कोई अपवाद फेंकना चाहिए।


मैंने निम्न विकल्पों पर विचार किया है।

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

दूसरा, डमी नोपफू कोड> / डमीफू वर्ग। मैं तब तरीकों को मैन्युअल रूप से कार्यान्वित करता हूं जिनसे इसे समर्थन की आवश्यकता होती है, और बस विधि निकायों में pass डालते हैं इसके बावजूद मुझे पता है कि यह कभी भी मेरा आवेदन नहीं तोड़ देगा। नकारात्मक पक्ष यह है कि अगर फ़ू के अन्य तरीकों को भविष्य में उपयोग किया जाता है, तो मुझे NoopFoo / DummyFoo ... या मेरे एप्लिकेशन को अपडेट करना है टूट सकता है

क्या इनमें से कोई एक बेहतर विकल्प है? ध्यान दें कि मैं पायथन के लिए नया हूँ इसलिए यदि यह अधिक उन्नत पायथन सुविधाओं को शामिल करता है, तो मैं थोड़ा और अधिक जानकारी की सराहना करता हूं। धन्यवाद!

आप उस वस्तु की मांग करते हैं जो कुछ नहीं करता है ऑब्जेक्ट का एक उदाहरण ठीक है।

  def (): वापसी ऑब्जेक्ट ()   

दूसरी ओर, आप वास्तव में इसे कुछ करना चाह सकते हैं आप चाहते हैं कि उसके पास ऐसे तरीके हों जो निष्पादित और वापस कोई नहीं आप इस वर्ग का एक उदाहरण वापस कर सकते हैं:

  में [1]: कक्षा नोप (ऑब्जेक्ट): ...: def nop (* args, ** kw): पास ...: Def __getatt __ (स्व, _): रिटर्न स्व। नोप ...: में [2]: n = Nop () में [3]: n.foo आउट [3]: & lt; बाध्य विधि nop.nop & lt; __ main__ । 0x7f9fec034650 पर ऑप ऑब्जेक्ट & gt; & gt; [4] में: n.foo () में [5]: n.foo (1,2,3)    

Comments

Popular posts from this blog

ios - Adding an SKSpriteNode to SKScene from a child SKSpriteNode -

Matlab transpose a table vector -

c# - Textbox not clickable but editable -