সিঙ্গেল আন্ডারস্কোর
একটি ক্লাসে, লিডিং আন্ডারস্কোর যুক্ত নামগুলো মূলত অন্যান্য প্রোগ্রামারকে ইঙ্গিত দেয় যে অ্যাট্রিবিউট বা মেথডটি প্রাইভেট হিসেবে ইণ্টেন্ডেড।
সেমি-প্রাইভেটের জন্য সিঙ্গেল আন্ডারস্কোর এবং ফুলি প্রাইভেটের জন্য ডাবল আন্ডারস্কোর ব্যবহার করা রিকমেন্ড করা হয়।
PEP-8 উদ্ধৃতি -
_single_leading_underscore: দুর্বল "internal use" ইন্ডিকেটর। উদাহরণ: from M import * আন্ডারস্কোর দিয়ে শুরু হওয়া নামের অবজেক্টগুলো ইম্পোর্ট করে না।
উদাহরণ
নিচের কোডটি ডাবল এবং সিঙ্গেল আন্ডারস্কোর প্রিফিক্সের পার্থক্য দেখাচ্ছে
class MyClass():
def __init__(self):
self.__fullrprivate = "World"
self._semiprivate = "Hello"
mc = MyClass()
print mc._semiprivate
print mc.__fullprivate
আউটপুট
Traceback (most recent call last): Hello File "C:/Users/TutorialsPoint1/~_1.py", line 8, inprint mc.__fullprivate AttributeError: MyClass instance has no attribute '__fullprivate'