python 类与对象的访问限制

在类中,

1.有时候类的属性或方法,开发者不想它被外界调用,但还是可以被调用,这种属性或方法叫受保护的属性、方法。在属性名或方法名前加一个下划线表示。

例如:一个人的存款一般不想被外人知道,但是当买房或者出国旅游需要存款证明的时候,别人如银行还是可以知道他的存款是多少的。


# 定义jim的存款账户为1000元,存款名为money是受保护的属性。
class Deposit(object):
    def __init__(self,money):
        self._money = money

jim_account = Deposit(1000)
print(jim_account._money)

# 执行结果为1000.

2.类的属性或方法不想被外界调用,这种叫做私有属性或方法。在属性名或方法名前加2个下划线表示。私有属性或方法外界虽无法调用,但在类里面是可以调用他们的。

例如:银行账户id是公开的,但密码外界是无法调用,属于私有属性。如果要打印账单流水,则需用正确的密码登陆账户后才能打印。

class Account(object):
    def __init__(self,account_id,password):
        self.account_id = account_id
        self.__password = password

    def __account_list(self):
        print('这是一个私有方法,外部无法调用,只能在类里面调用')
        print('密码正确,调用成功')
        return [1234,-546,5467]

    def get_account_list(self,password):
        if password == self.__password:
            # 调用类内部的私有方法
            self.__account_list()
            # 在类里面调用函数,函数名前要带self.否则报错
        else:
            print('密码错误')
            return None

account1 = Account('123456','147258')
account1.get_account_list('147258')

# 执行结果显示为
# 这是一个私有方法,外部无法调用,只能在类里面调用
# 密码正确,调用成功

3. 私有属性或方法之所以不能被调用,是因为被改了名字。它也不是100%受保护,想要调用的话还是可以。用_它所属类名
__属性或方法名,这样就可以被调用了。

你可能感兴趣的:(Python小知识)