面向对象-属性-私有化属性。
# ==============2.私有属性实现原理和间接访问=============== # 代码分割线 - 开始
class Person:
name = 'Tom' # 公有属性
_age = 18 # 受保护属性
__sex = '男' # 私有属性
# 私有属性是通过名字重整把原有的私有属性名 __sex 改成 _类__sex 了,所以在类之外无法访问
# 这样一来,我们可以直接访问 _类__sex 来实现私有属性__sex的访问
print(Person.__dict__) # {'name': 'Tom', '_age': 18, '_Person__sex': '男'}
print(Person._Person__sex)
# ==============2.私有属性实现原理和间接访问=============== # 代码分割线 - 结束
# ==============3.对象初始化和私有属性应用场景=============== # 代码分割线 - 开始
class Card:
def __init__(self):
self.name = 'Tom' # 要初始化对象所以要加self
self.__money = 100
def setMoney(self, val):
if (isinstance(val, int) or isinstance(val, float)) and val >= 0: # 对私有属性进行二次加工
self.__money = self.__money - val
else:
print('请输入正确的金额!')
def getMoney(self):
return self.__money
p = Card()
print(p.name)
# print(p.__money) # 无法访问,可以借助类方法来访问,实现对私有化属性的控制
p.setMoney(55.3)
print(p.getMoney())
# ==============3.对象初始化和私有属性应用场景=============== # 代码分割线 - 结束
# ==============4.补充说明=============== # 代码分割线 - 开始
# name_ 一般用于和系统关键词进行区分时候才用
# name__ 这个一本用于内置方法或属性名称
# ==============4.补充说明=============== # 代码分割线 - 结束