python访问对象的私有属性和私有方法

我们知道在python语法中,给属性和方法添加私有是在属性或方法前面加__  然后我们就无法通过正常方式访问到属性和方法,如下图所示:

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

    def __secret(self):
        print("%s 的年龄是:%s" % (self.name, self.__age))


persson= Persson("小明")
print(persson.__age)
persson.__secret()

运行肯定是会报错的

 

那么我们如何像java一样访问到对象的私有属性和方法呢,java通过反射,python却没有那么麻烦,翻看python底层实现我们发现,python底层对私有方法的处理是在私有方法前加入了_对象名,由此我们可以通过如下方式访问到私有属性和方法

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

    def __secret(self):
        print("%s 的年龄是:%s" % (self.name, self.__age))


persson= Persson("小明")
print(persson._Persson__age)
persson._Persson__secret()

 

你可能感兴趣的:(python)