吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 878|回复: 6
收起左侧

[学习记录] 私有化属性以及公有赋值和取值

[复制链接]
甜萝 发表于 2022-11-13 11:41
本帖最后由 paypojie 于 2022-11-13 12:27 编辑

                                                        类的私有化



前言     封装 定义私有化属性 定义公有 set get 方法
[Python] 纯文本查看 复制代码
# 先看一组没有私有属性的类
class Student():
    def __init__(self,name,age,score):

        self.name = name
        self.age = age
        self.score = score

    # 定义一个__str__方法 打印对象名时 自动调用此方法 该方法需要配合return语句 用来返回被打印的值
    def __str__(self):

        # 必须返回字符串 如果直接返回 self.name,self.age,self.score 会报错
        return '%s %s %s' % (self.name,self.age,self.score)

        # return '{} {} {}'.format(self.name,self.age,self.score)

# 创建实例对象
s = Student('Emma',18,59)
# 打印对象名时 自动调用__str__方法 
print(s)
# 输出s这个对象的score属性
print(s.score)

image.png




[Python] 纯文本查看 复制代码
# 现在 我想让score不可以通过s.score这种形式调用 以及修改

class Student():
    def __init__(self,name,age,score):

        self.name = name
        self.age = age

        # 私有化 在变量名前面添加两个下划线就行
        self.__score = score

    def __str__(self):

        return '%s %s %s' % (self.name,self.age,self.__score)

s = Student('Emma',18,59)
print(s)

#  去掉下面一行的注释 发现会报错 因为score私有化了 不能被访问 私有化属性只能在类里面访问
# print(s.__score)

# 尝试修改属性 
s.__score = 60
# 发现score属性没有被修改
print(s)

image.png




[Python] 纯文本查看 复制代码
# 定义公有set和get
# set为了赋值 get为了取值

class Student():
    def __init__(self,name,age,score):

        self.name = name
        self.age = age
        self.__score = score

    def __str__(self):

        return '%s %s %s' % (self.name,self.age,self.__score)

    def setScore(self,score):
        self.__score = score

s = Student('xiaoming',18,59)
print(s)
s.setScore(60)
print(s)

image.png




[Python] 纯文本查看 复制代码
class Student():
    def __init__(self,name,age,score):

        self.name = name
        self.age = age
        self.__score = score

    def __str__(self):

        return '%s %s %s' % (self.name,self.age,self.__score)

    def getScore(self):
        return self.__score

s = Student('xiaoming',18,59)
# 去掉下面一行代码会报错
# print(s.__score)

print(s.getScore())

image.png





                                                                                      小结


私有化属性 在属性名前面加__  属性就变成了私有属性 只能在类里面进行访问 外界是无法访问的
为了不让外界随意访问 定义公有set和get方法 可以允许修改和访问你指定的私有属性  
不一定需要用setXxx getXxx 这种形式 这样写 只是为了见名知意

set和get方法里面用if...else 这种条件判断语句 将能够更好的指定访问和修改属性值的范围





最后看张截图 都是最顶级的开源大神 网站链接放在评论区 这里 不知道如何添加链接


屏幕截图_20221113_120115_min.png





免费评分

参与人数 1吾爱币 +1 收起 理由
liuhui12138 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 甜萝 发表于 2022-11-13 11:57
本帖最后由 paypojie 于 2022-11-13 12:17 编辑

欢迎各位踊跃发言 发现用md添加链接可以点击跳转

屏幕截图_20221113_121258.png 添加链接没效果 https://www.facesofopensource.com/
akillking 发表于 2022-11-13 12:06
liuhui12138 发表于 2022-11-13 12:11
 楼主| 甜萝 发表于 2022-11-13 12:18

不是大佬 哈哈
 楼主| 甜萝 发表于 2022-11-13 12:19

学到了就好 还需要细看
 楼主| 甜萝 发表于 2022-11-13 17:23

试一下这个表情  
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 05:53

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表