আপনি কিছু পরীক্ষা করতে চান কিনা
নির্দিষ্ট পরিস্থিতিতে একটি সংখ্যার মতো কাজ করে
যদি আপনি পাইথন 2.5 বা ততোধিক বয়স্ক ব্যবহার করেন তবে আসল উপায় হ'ল কিছু "নির্দিষ্ট পরিস্থিতিতে" কিছু পরীক্ষা করে দেখুন।
২.6 বা তার চেয়েও ভাল আপনি সংখ্যারisinstance সাহায্যে ব্যবহার করতে পারেন umber সংখ্যা - একটি বিমূর্ত বেস ক্লাস (এবিসি) যা ঠিক এই উদ্দেশ্যে উপস্থিত রয়েছে ( collectionsবিভিন্ন ধরণের সংগ্রহ / ধারকগুলির জন্য মডিউলে আরও অনেকগুলি এবিসি বিদ্যমান রয়েছে, আবার ২. with থেকে শুরু করে এবং, এছাড়াও কেবলমাত্র এই প্রকাশগুলিতে, আপনার প্রয়োজন হলে আপনি সহজেই আপনার নিজের বিমূর্ত বেস ক্লাসগুলি যুক্ত করতে পারেন)।
বাচে 2.5 এবং তার আগে, "যুক্ত হতে পারে 0 এবং পুনরাবৃত্তিযোগ্য নয়" কিছু ক্ষেত্রে এটি একটি ভাল সংজ্ঞা হতে পারে। কিন্তু, আপনি কি সত্যিই নিজেকে জিজ্ঞেস করা উচিত, কি এটা বলছি যে কি কথা বিবেচনা করতে "একটি নম্বর" স্পষ্টভাবে সক্ষম হওয়া আবশ্যক প্রয়োজন না , এবং কি এটি একেবারে হওয়া আবশ্যক অক্ষম এবং চেক - না।
এটি ২.6 বা তার পরেও প্রয়োজন হতে পারে, আপনার নিজের নিবন্ধগুলি ইতিমধ্যে নিবন্ধভুক্ত করা হয়নি এমন বিষয়গুলি যুক্ত করতে আপনার নিজের রেজিস্ট্রেশন করার উদ্দেশ্যে numbers.Numbers- যদি আপনি বাদ দিতে চান কিছু প্রকার যেগুলি দাবি করে তবে তারা আপনার কেবল হ্যান্ডেল করতে পারে না, এটি আরও বেশি যত্ন নেয়, কারণ এবিসিদের কোনও unregisterপদ্ধতি নেই [[উদাহরণস্বরূপ আপনি নিজের অবিসি তৈরি করতে পারেন WeirdNumএবং সেখানে আপনার জন্য এই ধরণের অদ্ভুত সব ধরণের রেজিস্ট্রেশন করতে পারেন , তারপরে isinstanceআপনি এগিয়ে যাওয়ার আগে প্রথমে জামিনের জন্য এটি পরীক্ষা করুন check সাফল্যের সাথে চালিয়ে যাওয়ার isinstanceজন্য সাধারণের জন্য পরীক্ষা করা numbers.Number।
বিটিডাব্লু, যখন এবং যখন আপনাকে xকিছু করতে পারে বা করতে পারে না তা খতিয়ে দেখা দরকার, আপনার সাধারণত কিছু চেষ্টা করতে হবে:
try: 0 + x
except TypeError: canadd=False
else: canadd=True
উপস্থিতি এক (যেমন, চেক করুন যে "অনুমোদিত নয় iterable হতে" উত্থাপন__add__প্রতি সে আপনাকে দরকারী কিছুই বলে না, যেহেতু সমস্ত সিকোয়েন্সগুলি অন্যান্য সিকোয়েন্সগুলির সাথে মিলিত করার উদ্দেশ্যে রয়েছে। এই চেকটি সংজ্ঞার সমতুল্য "একটি সংখ্যা এমন কিছু যা এই জাতীয় জিনিসগুলির ক্রমটি অন্তর্নির্মিত ফাংশনটির জন্য একটি বৈধ একক যুক্তি sum", উদাহরণস্বরূপ। সম্পূর্ণ অদ্ভুত প্রকারের (যেমন 0 হিসাবে সংখ্যায় যোগ করার পরে "ভুল" ব্যতিক্রম উত্থাপনকারী, যেমন, বলুন, একটি ZeroDivisionErrorবা ValueErrorসি) ব্যতিক্রম প্রচার করবে, তবে এটি ঠিক আছে, ব্যবহারকারীকে এএসএপটি জানান যে এই জাতীয় পাগল প্রকারগুলি ঠিক তেমন গ্রহণযোগ্য নয় প্রতিষ্ঠান;-); তবে, একটি "ভেক্টর" যা স্কেলারের সংক্ষিপ্তযোগ্য (পাইথনের স্ট্যান্ডার্ড লাইব্রেরিটির একটি নেই, তবে অবশ্যই তারা তৃতীয় পক্ষের এক্সটেনশন হিসাবে জনপ্রিয়) এখানেও ভুল ফল দিতে পারে, সুতরাং (উদাঃiter(x)TypeError বা বিশেষ পদ্ধতির উপস্থিতির জন্য __iter__- যদি আপনি 2.5 বা তার বেশি বয়সী হন এবং সুতরাং আপনার নিজের চেকগুলির প্রয়োজন হয়)।
এই জাতীয় জটিলতার একটি সংক্ষিপ্ত ঝলক আপনাকে যখনই সম্ভব সম্ভব বিমূর্ত বেস ক্লাসের উপর নির্ভর করতে উত্সাহিত করার জন্য যথেষ্ট হতে পারে ... ;-)।