যার বাস্তবায়ন বিচারাধীন, তবে বিমূর্ত হওয়ার পরিকল্পনা নেই এমন পদ্ধতির জন্য একটি নোটইম্প্লিমেটেড এরির উত্থাপন করা কি প্রচলিত?


34

আমি NotImplementedErrorপ্রয়োগ করতে চাই এমন যে কোনও পদ্ধতির জন্য একটি উত্থাপন করতে চাই , তবে যেখানে আমি এখনও এটি করতে পারি নি। আমি ইতিমধ্যে একটি আংশিক বাস্তবায়ন হতে পারে, তবে এটি এটিকে প্রস্তুত করুন raise NotImplementedError()কারণ আমি এটি এখনও পছন্দ করি না। অন্যদিকে, আমিও সম্মেলনে আটকে থাকতে চাই, কারণ এটির মাধ্যমে আমার কোড বজায় রাখা আরও সহজ হবে, এবং সম্মেলনগুলি কোনও ভাল কারণে থাকতে পারে।

তবে নোটআইপ্লিমিটেড এরির এর জন্য পাইথনস ডকুমেন্টেশন বলে:

এই ব্যতিক্রমটি রানটাইমআরার থেকে প্রাপ্ত। ব্যবহারকারীর সংজ্ঞায়িত বেস ক্লাসে, বিমূর্ত পদ্ধতিগুলি যখন এই পদ্ধতিটিকে ওভাররাইড করার জন্য উদ্ভূত শ্রেণীর প্রয়োজন হয় তখন তাদের ব্যতিক্রম বাড়াতে হবে।

এটি আমি বর্ণনা করা থেকে অনেক বেশি নির্দিষ্ট, প্রথাগত ব্যবহারের কেস। NotImplementedErrorএপিআই-র এই অংশটি একটি অগ্রগতিতে কাজ করছে তা বোঝানোর জন্য কি সহজ, প্রচলিত শৈলীটি বাড়ানো ভাল ? যদি তা না হয় তবে এটির ইঙ্গিত দেওয়ার কোনও আলাদা মানক উপায় আছে কি?


"উপযুক্ত" বলতে কী বোঝ?
রবার্ট হার্ভে

1
@ রবার্ট হার্ভে আমি মনে করি প্রচলিত ব্যবহারগুলি অনুসরণ করে আমি প্রচলিত। আমি এখন আমার প্রশ্নটি পুনরায় উত্তর দিয়েছি।
জিরাট

1
আমরা এখানে প্রাথমিকভাবে সি # ব্যবহার করি তবে এই ধরণের ব্যতিক্রম ছোঁড়াটি এখানে মূর্খবাদী এবং আমি অন্য কোথাও আশা করব। খুব তাড়াতাড়ি বিরতি এবং উচ্চস্বরে বিরতি সম্ভাব্য সমস্যাগুলি দ্রুত সনাক্ত করার জন্য একটি ভাল গাইডলাইন (পড়ুন: কম খরচে পড়ুন)।
তেলস্তিন

সাধারণত যদি আমি একটি ক্লাস তৈরি করছি আমি কার্যকারিতা বাস্তবায়নের কাছাকাছি না আসা পর্যন্ত কেবল অযৌক্তিক পদ্ধতিতে টোডো মন্তব্যগুলি রাখি। যদি ক্লাসটি প্রযোজনায় প্রকাশিত হতে চলেছিল তার আগে, আমি ব্যতিক্রম ছোঁড়া বিবেচনা করব।

5
এটির মূল্যের জন্য, আপনি "ইন্টারফেস বাস্তবায়ন করতে" IDE ব্যবহার করার সময় মাইক্রোসফ্ট ভিজ্যুয়াল স্টুডিও ডিফল্টরূপে এটি করে। রবার্ট হার্ভে বলেছেন, ফলাফল ভালভাবেই বোঝা গেছে।
Catfood

উত্তর:


34

এটি লক্ষণীয় যে, পাইথন ডকুমেন্টেশনগুলি এই ব্যতিক্রমের জন্য ব্যবহারের ক্ষেত্রে (এবং সম্ভবত ক্যানোনিকাল একটি) সরবরাহ করে তবে এটি অন্যান্য পরিস্থিতিতে তার ব্যবহারকে বিশেষভাবে বাদ দেয় না।

আমি যদি আপনি বেস ক্লাসে কোনও পদ্ধতি ওভাররাইড না করে থাকেন ("ইন্টারফেস" কে সন্তুষ্ট করতে) তবে একটি নোটইম্প্লিমেটেডএরর ব্যতিক্রম উত্থাপন করা যথাযথ বিবেচনা করব।

গুগলে একটি কার্সারি চেক পরামর্শ দেয় যে আপনি যদি এই ফ্যাশনে ব্যতিক্রমটি ব্যবহার করেন তবে লোকেরা আপনার অর্থ কি তা বুঝতে পারবে । আমি জানি যে কোনও পার্শ্ব প্রতিক্রিয়া বা অনিচ্ছাকৃত পরিণতি নেই; পদ্ধতিটি বলা হলে কেবল একটি ব্যতিক্রম ছুঁড়ে মারবে, এবং এটি একটি ব্যতিক্রম ছুঁড়ে দেবে যা প্রত্যেকের দ্বারা ভালভাবে বোঝা যায়।


ডকুমেন্টেশন পাইথন 3 এই সঠিক ব্যবহার প্রতিফলিত:

ব্যবহারকারীর সংজ্ঞায়িত বেস ক্লাসগুলিতে, বিমূর্ত পদ্ধতিগুলি যখন এই পদ্ধতিটিকে ওভাররাইড করার জন্য উদ্ভূত শ্রেণীর প্রয়োজন হয় বা ক্লাসটি বিকাশ করা হয় তখন প্রকৃত বাস্তবায়নটি যুক্ত করার দরকার হয় তা বোঝাতে হবে । [সামনে জোর দাও]


+1, তবে আমি এগুলি যোগ করব যে এই ধরণের সম্মেলনের জন্য, একটি সামান্য ডকুমেন্টেশন অনেক দীর্ঘ যেতে পারে go কোনও দেব উইকি, রেপো রিডমি বা স্টাইলের গাইডলাইন-তে এক-লাইন নোটের মতো - এমন কিছু - আপনি কী ব্যতিক্রমটি ব্যবহার করেন তা ব্যাখ্যা করে।
বেন লি

8

আপনি এটি করেন বা না করেন তা স্থানীয় (দল বা সংস্থা) কনভেনশনগুলির উপর নির্ভর করা উচিত কিনা এটি বোঝা যাবে। নোট করুন যে এটি টিডিডি প্রসঙ্গে কম ধারণা দেয় কারণ টেস্টটি এমন হওয়া উচিত যা পদ্ধতিটি বাস্তবায়িত হয়নি isn't

সংক্ষিপ্ত সংস্করণটি হ'ল: আপনি এবং আপনার দলটি এটি যথাযথ বিবেচনা করলে ব্যবহার করুন।


5
এফডাব্লুআইডাব্লু, ব্যর্থতা নিক্ষেপ করা পরীক্ষাটি ব্যর্থ হওয়ার জন্য ভাল উপায় হওয়া উচিত, যদি কোনও কারণে যদি আপনাকে সেই আচরণটি বাধ্য করতে হয়। (উদাহরণস্বরূপ, এটি কোনও পদ্ধতি-সংজ্ঞা ইন্টেলিজেন্স স্টাবের অংশ হিসাবে দরকারী হবে))
ডগএম

1

দেখে মনে NotImplementedErrorহচ্ছে সাধারণত পাইথন বৈশিষ্ট্য বিকাশের জন্য উত্থাপিত হয় যা নীচের মত:

@classmethod
def fromkeys(cls, iterable, v=None):
    # There is no equivalent method for counters because setting v=1
    # means that no element can have a count greater than one.
    raise NotImplementedError(
        'Counter.fromkeys() is undefined.  Use Counter(iterable) instead.')

Documetation

fromkeys (iterable)

কাউন্টার অবজেক্টের জন্য এই শ্রেণি পদ্ধতিটি প্রয়োগ করা হয় না।

সূত্র

Collections.Counter.fromkeys

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.