鱼C论坛

 找回密码
 立即注册
查看: 2425|回复: 0

[学习笔记] 私有变量、__slots__

[复制链接]
发表于 2023-2-14 22:43:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
# !/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time   : 2023/2/14 21:47
# @Author : xiongming
# @File   : shiyoubianlaing.py
# @Desc   : 私有变量-name_mangling

class C:
    def __init__(self, x):
        self.__x = x
    def set_x(self, x):
        self.__x = x
    def get_x(self):
        print(self.__x)

c = C(250)
# c.__x 报错
c.get_x()
c.set_x(520)
c.get_x()
print(c.__dict__)
print(c._C__x)

class D():
    def __func(self):
        print("Hello")

d = D()
# d.__func() 报错
d._D__func()

# 动态添加私有属性
c.__y = 100
print(c.__dict__)

# _单个下横线开头的变量,内部变量,不易访问
# 单个下横线结尾的变量

class D():
    # 限制了属性,不能添加额外的,划出固定空间给属性
    # 继承自父类的__slots__属性是不会在子类中生效的
    __slots__ = ["x", "y"]
    def __init__(self, x):
        self.x = x

d = D(5)
print(d.x)

d.y = 11
print(d.y)
# d.z = 66 报错

# 继承自父类的__slots__属性是不会在子类中生效的
class E(D):
    pass

e = E(33)
print(e.x)
e.y = 55
print(e.y)

e.z = 22
print(e.__slots__)
print(e.__dict__)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 07:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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