当前位置: 首页 > article >正文

Python 类私化有笔记

#encoding=utf-8
#私有化
#封装:1.私有化属性部分;2.定义共有的set和get方法
#__属性:就是将属性私有化,访问范围仅仅限于类中
'''
好处:
1.隐藏属性不被外界修改
2.也可以修改:通过set方法修改
def setXXX(self,XXX):
    3.筛选内容
    if xxx是否符合条件:
        赋值
    else:
    不赋值
3.如果想获取某个具体的属性可以使用def getXXX(self):
return self.__XXX
'''
class Student:
    # __age=18 #类属性

    def __init__(self,name,age):
        self.__name=name
        self.__age=age
        self.__score=59
    #定义公有set和get方法
    #set是为了赋值,get是为了取值
    def setAge(self,age):
        if age >0 and age<120:
            self.__age=age
        else:
            print('年龄超出范围')

    def getAge(self):
        return self.__age
    def setName(self,name):
        if len(name)>0 and len(name)<10:
            self.__name=name
        else:
            print('名字不是0-10位')
    def getName(self):
        return self.__name
    def __str__(self):
        # return "Name:"+self.name+"\nAge:"+str(self.age)+'\nScore:'+str(self.__score)
        return "姓名:{},年龄{},考试分数{}".format(self.__name,self.__age,self.__score)
    #attribute
s1=Student('kate',19)
print(s1)
s1.setAge(20)
print(s1)
s1.setName('katherine')
print(s1)
print(s1.getName())
print(dir(Student))
print(dir(s1))
print(s1.__dir__())
s1._Student__age=25#其实它就是__age,只不过系统自动改名字了
print(s1)
#在开发中看到的一些私有化处理,装饰器@property,可以将私有化改成和非私有化一样的调用
class Student:
    def __init__(self, name, age, score):
        self.__name=name
        self.__age=age
        self.__score=score

    def setName(self,name):
        if len(name)==6:
            self.__name=name
        else:
            print('输入名字不是6位')

    def setAge(self,age):
        if age>0 and age<=120:
            self.__age=age
        else:
            print('年龄不在正确范围内')
    @property
    def score(self):
        return self.__score
    @score.setter
    def score(self,score):
        if self.__score>0 and self.__score<100:
            self.__score=score
        else:
            print('分数不对')
    def getName(self):
        return self.__name
    def getAge(self):
        return self.__age
    def __str__(self):
        return ('姓名是:{};年龄是{},考试分数是:{}'.format(self.__name, self.__age, self.__score))

s1=Student('kate',20,88)
print(s1)
s1.Name('kather')
s1.score=90
print(s1.score)
print(s1)


http://www.kler.cn/a/391004.html

相关文章:

  • NVIDIA Isaac Sim 仿真平台体验测评
  • vue中如何关闭eslint检测?
  • 【C#设计模式(8)——过滤器模式(Adapter Pattern)】
  • 【mySql 语句使用】
  • 前端知识点---Javascript的对象(Javascript)
  • Rust 整数
  • 【深度学习遥感分割|论文解读2】UNetFormer:一种类UNet的Transformer,用于高效的遥感城市场景图像语义分割
  • 量化交易系统开发-实时行情自动化交易-3.4.2.2.Okex交易数据
  • 从0开始搭建一个生产级SpringBoot2.0.X项目(十三)SpringBoot连接MongoDB
  • 请求接口时跨域问题详细解决方案
  • 前端开发调试之 PC 端调试
  • 使用 `RestTemplate` 获取二进制数据并返回 `byte[]`:解决方案与示例
  • Java 多态 (Polymorphism)详解
  • 智能社区服务小程序+ssm
  • MySQL数据库:SQL语言入门 (学习笔记)
  • ubuntu 20.04添加ros官方的软件源(解决下载ros软件包出现的E 无法定位软件包的问题)
  • ERP学习笔记-预处理eeglab
  • Transformer模型中的位置编码介绍
  • 群晖 Docker 容器文件夹出现未知用户 UID 1000
  • 开源TTS语音克隆神器GPT-SoVITS_V2版本地整合包部署与远程使用生成音频
  • 云计算在教育领域的应用
  • 数据库基础(10) . MySQL函数
  • 【MATLAB源码-第291期】基于matlab的AMI编码解码系统仿真,输出各个节点波形。
  • XML 现实案例:深入解析与应用
  • 斯坦福泡茶机器人DexCap源码解析:涵盖收集数据、处理数据、模型训练三大阶段
  • 【动手学电机驱动】STM32-FOC(5)基于 IHM03 的无感 FOC 控制