面向对象——访问控制

访问控制:

类型1(系统):
首部都是下划线的(类似“xxx”)变量,是特殊变量
类型2(保护):
可以被访问,但是,通常视为私有变量,不要随意访问 ——类似(“x")
类型3(私有):
双下划线开头,私有变量,无法直接使用 ——("
_x”)

_ _age私有变量,很好的实现了隐藏,无论使用age访问,还是 _age访问,都无法访问到类内部 _ _age,实现了高级封装。
如果真的非常有必要要访问 _ _age, 访问的方法是 —— 对象. _类名 _ _age 非法不建议。

class person():
    def __init__(self,name,age,grade):
        print("=====开始======")
        self.name=name
        self.__age=age
        self.grade=grade
    def show(self):
        print(self.name)
        print(self.__age)
        print(self.grade)
        print("=====结束======")
    def setage(self,age):
        if age<0:
            print("年龄不符合")
        else:
            self.__age=age
    def getage(self): #get的作用是获得特定的参数(函数)
        print("我的年龄是:",self.__age)
张三=person('张三',23,98)
张三.show()
张三.age=-25
张三.show()
张三.setage(36)
张三.show()

张三.getage()

运行结果:

=====开始======
张三
23
98
=====结束======
张三
23
98
=====结束======
张三
36
98
=====结束======
我的年龄是: 36  #获得的36 是上一步操作已经将23改成36了。

练习:
构造一个学生类,包含身高、体重属性,“学习”方法。
• 将身高体重设置为私有变量。
• 设置get方法、set方法,实现对上述私有变量的访问、设置。

class student():
    def __init__(self,height,weight):
        self.__height=height
        self.weight=weight
    def show(self):
        print("身高:",self.__height)
        print("体重:",self.weight)
    def setheight(self,height):
        if self.__height<0:
            print("您的身高不对")
        else:
            self.__height=height
    def getheight(self):
        print("身高:",self.__height)

张三=student(1.75,160)
张三.show()
张三.age=1.80
张三.show()
张三.getheight()
张三.setheight(1.90)
张三.show()

运行结果:

身高: 1.75
体重: 160
身高: 1.75
体重: 160
身高: 1.75
身高: 1.9
体重: 160
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值