私有属性 这样定义为什么可以输出

img
此时的年龄也不是一个新定义的其他变量吧 Σ(°Д°;

已经是新定义的变量了!你试试下面这段代码:

class Women:
    def __init__(self, name):
        self.name=name
        self.__age=18

    def print(self):
        print(self.name, self.__age)

xiaomei=Women("小美")
d1=dir(xiaomei)
xiaomei.__age=20
print(set(dir(xiaomei))-set(d1))
print(xiaomei.__age)
print(xiaomei._Women__age)
xiaomei.print()
xiaomei._Women__age=16
xiaomei.print()

可以啊,直接创建了一个变量赋值,然后输出值。

私有变量是不能被外部访问的,你那样相当于动态给加了一个不同的属性。见下面的代码:

class Woman(object):
    def __init__(self):
        self.__age = 18

    def force_answer(self):
        print(self.__age)


woman = Woman()
woman.__age = 20
print(woman.__age)
woman.force_answer()

输出:

20
18