#"单下划线" 开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量;
#"双下划线" 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。

class Pub(object):

    var1 = 'hello'
    _var2 = 'yes'
    __var3 = 'hah'

    def __init__(self):
        self._a = 123
        self.__b = 456
        self.c = 789

    def show_a_var(self):
        return self._a

    def show_b_var(self):
        return self.__b

    def show_var2(self):
        return self._var2

    def show_var3(self):
        return self.__var3

class Foo(Pub):
    pass

print(Pub.var1)

sl = Pub()
print(sl.c)
print(sl.show_a_var())
print(sl.show_b_var())

print(sl.show_var2())
print(sl.show_var3())

fa = Foo()
print(fa._var2)
print(fa.var1)
print(fa.show_a_var())
print(fa.show_var2())