Private Attribute

នៅ​ក្នុង​ថ្នាក់​មួយ បើ​សិន​ជា​មាន​ attribute ​ផ្សេង​ៗ​មាន​សញ្ញា _ ពីរ​នៅ​ពី​មុខ attribute ទាំងនោះ​នឹង​មិន​អាច​ត្រូវ​យក​ទៅ​ប្រើ​នៅ​ខាង​ក្រៅ​ថ្នាក់ ដោយ​ប្រើប្រាស់​ឈ្មោះ​ដូច​នោះ​បាន​ឡើយ​។ ពិនិត្យ​កម្មវិធី​ខាង​ក្រោម​នេះ៖

class Cash():
    def __init__(self, money=0):
        self.__money = money

    def display(self):
        print(self.__money)


sale = Cash(1000)
sale.display()
print(sale.__money)
1000
Traceback (most recent call last):
  File "C:/pythonProject/main.py", line 11, in <module>
    print(sale.__money)
AttributeError: 'Cash' object has no attribute '__money'

គ្រប់ attribute នៅ​ក្នុង​ថ្នាក់​ដែល​មាន​សញ្ញា _ នេះ​ពីរ​នៅ​ពី​មុខ​គឺ​ជា private attribute ពីព្រោះ​វា​មិន​អាច​ត្រូវ​យក​ទៅ​ប្រើ​នៅ​ខាង​ក្រៅ​ថ្នាក់​របស់​វា​បាន​ឡើយ​។ ក៏ប៉ុន្តែ បើ​យើង​ពិត​ជា​ចង់​យក private attribute ទាំងឡាយ​ទៅ​ប្រើ​ប្រាស់​នៅ​ខាង​ក្រៅ​ថ្នាក់​មែន​នោះ យើងត្រូវ​ធ្វើ​ដូច​ខាង​ក្រោម​នេះ៖

class Cash():
    def __init__(self, money=0):
        self.__money = money

    def display(self):
        print(self.__money)


sale = Cash(1000)
sale.display()
print(sale._Cash__money)
1000
1000