class Gender_horse(object): def seta(self, gender): setattr(self, '__gender', gender) def set(self, gender): self.__gender = gender def geta(self): return getattr(self, '__gender') def get(self): return self.__gender dilu = Gender_horse() # 在 class 中定义私有属性 dilu.set('Female') print(hasattr(dilu, '__gender'), dir(dilu)) print(getattr(dilu, '__gender', None), dilu.get()) # 在 class 中用三个 attr 定义非私有属性 dilu.seta('Lesbian') print(hasattr(dilu, '__gender'), dir(dilu)) print(getattr(dilu, '__gender', None), dilu.get(), dilu.geta())
# 只有在不知道对象信息的时候, 我们才会去获取对象信息.
# 三个 attr 相比于 x.y 的直接调用, 还有优点就是, 'y'是字符串, 可以是变量, 是可从客户端输入的! 而不必须嵌进代码.
# 注意, 三个 attr 仍然是外部程序对 x 的调用, 因此同样无法经过私有变量的加密, 即使是在 class 里面使用三个 attr!
# 当然, 私有变量的私有, 不仅包括代码端两个 class 或两个开发者的相互隐藏, 还包括对用户端的隐藏.
Sign in to make a reply
幽境的荼蘼
# 只有在不知道对象信息的时候, 我们才会去获取对象信息.
# 三个 attr 相比于 x.y 的直接调用, 还有优点就是, 'y'是字符串, 可以是变量, 是可从客户端输入的! 而不必须嵌进代码.
# 注意, 三个 attr 仍然是外部程序对 x 的调用, 因此同样无法经过私有变量的加密, 即使是在 class 里面使用三个 attr!
# 当然, 私有变量的私有, 不仅包括代码端两个 class 或两个开发者的相互隐藏, 还包括对用户端的隐藏.