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()
