pythonパッケージの最下位実装原理

1148 ワード

実際、pythonパッケージのプロパティの実装は「投機的」であり、クラスオブジェクトがプライベートメソッドとプロパティを直接呼び出すことができないのは、最下位の実装時にpythonがこっそり名前を変更したためです.
pythonは、最下位実装時に、それらの名前をこっそり「_クラス名__属性(メソッド)名」のフォーマットに変更しました.
class Person:
    def setname(self, name):
        if len(name) < 3:
            raise ValueError('        3!')
        self.__name = name
        
    def getname(self):
        return self.__name
    
    # name  setter getter  
    name = property(getname, setname)
    
    def setage(self, age):
        if age < 100:
            self.__age = age
        else:
            raise ValueError('      100!')
    
    def getage(self):
        return self.__age
    
    # age  getter setter  
    age = property(getage, setage)
    
    #      
    def __display(self):
        print(self.__name, "  ", self.__age, " 。")
        
xiaobai = Person()
xiaobai.name = "xiaobai"
xiaobai.age = 20
#       display()  
xiaobai._Person__display()
xiaobai    20  。

要約:pythonクラスのすべてのプロパティとメソッドは、共通です.pythonの下位レベルでクラスプロパティまたはクラスメソッドの名前を変更して非表示にする場合は、名前の前に二重下線("")を追加するだけです.できます.