1. 程式人生 > 實用技巧 >_、__、__xx__之間的差別

_、__、__xx__之間的差別

class A(object):
    def __init__(self):  # 系統定義方法
        self.string='A string'
        self._string='A _string'
        self.__string='A __string'  # 私有變數

    def fun(self):
        return self.string + ' fun-A'

    def _fun(self):
        return self._string+'  _fun-A'

    def __fun(self):  # 私有方法
        return self.__string+' __fun-A'

    def for__fun(self):  # 內部呼叫私有方法
        return self.__fun()

class B(A):

    def __init__(self):  # 系統定義方法
        self.string = 'B string'


a = A()
print(a.string)
print(a._string)
# print(a.__string)  # 不可訪問

print(a.fun())
print(a._fun())
# print(a.__fun())  # 不可訪問
print(a.for__fun())

b = B()
print(b.fun())
print(b.fun().__len__())  # 系統定義函式

  

class X(object):
    def __init__(self, a, b, c):
        self.a = a
        self.b = b
        self.c = c

    def __call__(self, a, b):
        self.a = a
        self.b = b


x = X(1, 2, 3)
print(x.a, x.b)
x(4, 5)
print(x.a, x.b)

  

.