栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

面向对象的私有化

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

面向对象的私有化

面向对象的私有化
"""
私有化
封装:1.私有化属性 2.定义公有set和get方法
__属性:就是将属性私有化,访问权限仅仅限于类中
"""

"""
好处:
1.隐藏属性不被外界随意修改
2.也可以通过函数来修改
3.要写函数set 并且可以控制修改的内容
4.如果想获取具体的某一个属性
使用get函数
"""


class Student:
    def __init__(self, name, age):
        self.__name = name
        self.__age = age
        self.__score = 60

    # 定义公有的set和get方法
    # set是为了赋值
    def setAge(self, age):
        if 0 < age < 120:
            self.__age = age
        else:
            print('年龄不在正常范围内')

    # get是为了取值
    def getAge(self):
        return self.__age

    # 修改名字的时候,设置名字的要求
    # 例 长度必须是六位
    def setName(self, name):
        if len(name) == 6:
            self.__name = name
        else:
            print('名字不是六位')

    def getName(self):
        return self.__name

    def __str__(self):
        return f'姓名{self.__name, self.__age, self.__score}'


xiaoming = Student('xiaoming', 18)
print(xiaoming)
xiaoming.setAge(20)
print(xiaoming)
xiaoming.setName('xiaohua')
print(xiaoming)

xiaocui = Student('xiaocui', 19)
print(xiaocui)

# 单独拿到小明的年龄
print(xiaoming.getAge())
print(xiaocui.getName())

"""
通过装饰器
"""


class Student:
    def __init__(self, name, age):
        self.__name = name
        self.__age = age
        self.__score = 60

    # 先有它的返回值相当于get
    @property
    def age(self):
        return self.__age

    # 再有set可以改变属性值
    @age.setter
    def age(self, age):
        if 0 < age < 120:
            self.__age = age
        else:
            print('年龄不在正常范围内')

    def __str__(self):
        return f'姓名{self.__name, self.__age, self.__score}'


xiaoming = Student('xiaoming', 18)
print(xiaoming)
xiaoming.age = 30
print(xiaoming)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/313454.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号