আর একটি সম্ভাব্য বিকল্প, তবে এটি আপনি যদি আগে বোঝাতে চেয়েছিলেন তা নির্ভর করে :
undefined = object()
class Widget:
def __init__(self):
self.bar = 1
def zoom(self):
print("zoom!")
a = Widget()
bar = getattr(a, "bar", undefined)
if bar is not undefined:
print("bar:%s" % (bar))
foo = getattr(a, "foo", undefined)
if foo is not undefined:
print("foo:%s" % (foo))
zoom = getattr(a, "zoom", undefined)
if zoom is not undefined:
zoom()
আউটপুট:
bar:1
zoom!
এটি আপনাকে এমনকি কোনও মূল্যবান বৈশিষ্ট্যও পরীক্ষা করতে দেয়।
কিন্ত! আপনি দুর্ঘটনাক্রমে undefinedএকাধিক জায়গাগুলি তাত্ক্ষণিকভাবে তুলনা এবং তুলনা না করার বিষয়ে খুব সতর্ক থাকুন কারণ সে isক্ষেত্রে কখনই কাজ করবে না।
হালনাগাদ:
উপরের অনুচ্ছেদে আমি যে বিষয়ে সতর্ক করেছিলাম তার কারণেই, একাধিক অপরিজ্ঞাত যা কখনও মেলে না, আমি সম্প্রতি এই প্যাটার্নটিতে কিছুটা সংশোধন করেছি:
undefined = NotImplemented
NotImplementedবিভ্রান্ত হওয়ার মতো নয় NotImplementedError, এটি একটি অন্তর্নির্মিত: এটি কোনও জেএসের অভিপ্রায়কে অর্ধমুখে মেলে undefinedএবং আপনি তার সংজ্ঞাটি যে কোনও জায়গায় আবার ব্যবহার করতে পারেন এবং এটি সর্বদা মিলবে। ত্রুটিগুলি হ'ল এটি বুলিয়ান্সে "সত্যবাদী" এবং এটি লগ এবং স্ট্যাকের চিহ্নগুলিতে অদ্ভুত লাগতে পারে (তবে আপনি যখন জানবেন যে এটি কেবলমাত্র এই প্রসঙ্গে প্রদর্শিত হয়)
import string hasattr(string, "lower")