'''
·为存款信息添加保护,使其不能被直接访问
·增加设置密码功能
·增加存款查询功能,只有输入密码正确的情况下才能查询存款信息
'''


class Person:
    # 类属性(相当于静态属性)
    name = "陈独秀"  # 公有的类属性
    # rmb = 500
    # __私有属性
    __rmb = 500

    # 私有方法:设置存款
    def __setrmb(self, rmb):
        self.__rmb = rmb

    # 通过公开方法访问私有方法进行存款设置
    def setrmb(self, rmb):
        pwd = input("请输入设置密码:")
        if (pwd == "123456"):
            self.__setrmb(rmb)
        else:
            print("您没有权限,fuck off")

    # 公开一个方法,共外界访问私有属性self.__rmb
    def getrmb(self):
        pwd = input("请输入查询密码:")
        if (pwd == "123456"):
            return self.__rmb
        else:
            return "您没有访问权限"

    # 构造方法:外界创建类的实例时调用
    # 构造方法是初始化实例属性的最佳时机
    # 某个对象调用其方法时,python解释器会把这个对象作为第一个参数传递给self
    def __init__(self, name, age, rmb):
        print("__init__:劳资被创建了")
        self.name = name  # 实例属性
        # _ 不是私有的,但是别轻易访问(如女生年龄)
        self._age = age
        self.rmb = rmb

    # 自我介绍方法
    # self = 类的实例
    def introduction(self):
        print("我是%s,我%d岁了,我有存款%.2f万元" % (self.name, self._age, self.rmb))


if __name__ == '__main__':
    # 创建Person类的实例
    # p = Person()
    p = Person("秀芹", 18, 0)
    # 调用实例方法
    p.introduction()

    print(p.name, ":我虽然没钱,俺可以给你暖被窝呀")
    '''
    # 类属性和实例属性区别(类似全局变量和局部变量)
    p = Person()
    # 通过类访问
    print(Person.name)
    # print(Person.age)  # 错误

    # 通过实例.属性访问
    print(p.name)
    # 通过类修改属性
    Person.name = "蒂花之秀"
    print(Person.name, p.name)
    p.name = "维密秀"
    print(Person.name, p.name)
    '''

    # print(p.__rmb)  # 错误,不能在类外通过实例对象访问私有的类属性
    # print(People.__rmb)  # 错误,不能在类外通过类对象访问私有的类属性
    print(p._Person__rmb)  # 如果想要强制访问私有字段,可以通过【对象._类名__私有字段明 】不建议强制访问私有成员。

results matching ""

    No results matching ""