python基础 之 私有变量限制访问

注:个人笔记,仅供参考
环境:python3.8

"""
@fengx
--私有变量
--20200621
"""

class Student(object):

    def __init__(self, name, score):
        self.name = name
        self.score = score
    
    def print_score(self):
        print('%s:%s'%(self.name,self.score))
        
    def get_grade(self):
        if self.score >= 90:
            return 'A'
        elif self.score >= 60:
            return 'B'
        else:
            return 'C'
       

bart = Student("bart simpe", 59)
lisa = Student('Lisa Simpson', 87)
lisa.age = 14

print(bart.name,bart.score,bart.get_grade())
print(lisa.name,lisa.score,lisa.get_grade())
bart.print_score()
print(bart.print_score)
print(lisa.age)
"""在变量前加__表示私有变量,限制外部访问, """


class Stu (object):
    def __init__(self,age,sex):
        self.__age = age
        self.__sex = sex
    def print_age(self):
        print('%s:%s'%(self.__age,self.__sex))
        
    """ 新增方法来获取 age 和 sex """
    def get_age(self):
        return self.__age
        
    def get_sex(self):
        return self.__sex
        
    """ 新增方法来修改 age 和 sex """
    """ 在方法中设置检查,避免无效参数传入"""
    def set_age(self,age):
        if 0 <= age <= 100:
            self.__age=age 
        else :
            raise ValueError("bad age")
        
        
bart = Stu(18,"nv")
may = Stu(20,"nan")

""" 调用方法"""
may.print_age()

may.set_age(33)
may.print_age()

may.set_age(111)
may.print_age()

print(bart.__age)
"""外部代码不能随意修改对象内部状态"""
"""
AttributeError: 'Stu' object has no attribute '__age'
"""
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值