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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值