PYTHON类中“__”和“_”用法小记

# -*- coding: gb2312 -*-

class PrivateClass:
    def __init__(self):
        print "PrivateClass.__init__()"
        
        self.__priAttr = "PrivateClass.__priAttr"
        self._priAttr = "PrivateClass._priAttr"
        
        self._priFunc()
        self.__priFunc()
        
    def __priFunc(self):
        print "PrivateClass.__priFunc()"
        
    def _priFunc(self):
        print "PrivateClass._priFunc()"

if __name__ == "__main__":
    # “__”为私有的,类外部不可调用。
    # “_”在使用“import”时,是不被包含的,如:
    # from PrivateClass import *
    # PrivateClass._priFunc() # TypeError
    
    privObj = PrivateClass()
    
    print "privObj attr:", privObj._priAttr
    privObj._priFunc()

    print "privObj attr:", privObj.__priAttr # AttributeError
    privObj.__priFunc() # AttributeError
输出:

PrivateClass.__init__()
PrivateClass._priFunc()
PrivateClass.__priFunc()
privObj attr: PrivateClass._priAttr
PrivateClass._priFunc()
privObj attr:

你可能感兴趣的:(PYTHON类中“__”和“_”用法小记)