首页 > 编程语言 > 详细

python的__slots__变量

时间:2020-10-15 10:25:57      阅读:25      评论:0      收藏:0      [点我收藏+]
####################__slots__系统属性#####################
#:在所有的类中实例属性都可以根据用户的需要进行动态的配置,但这样的话就有可能造成不同的实力化对象都拥有各自不同的实例属性("有可能有的动态属性是一个,有的是两个"),为了限制用户在实例化类的时候添加过多的动态属性,python提供了一个__slots__属性用来进行限制
# class Member:
# __slots__ = ("name","age") #:限制对象在实例化时只能实例化两个属性"name,age"
# def main():
# mem = Member()
# mem.name = "杨洋" #:实例化属性
# mem.age = 21 #:实例化属性
# print("姓名:%s,年龄%d"%(mem.name,mem.age)) #:这样的执行结果肯定是正常的
# if __name__ == "__main__":
# main()

#:ps.但如果
# class Member:
# __slots__ = ("name","age")
# def main():
# mem = Member()
# mem.name = "杨洋"
# mem.age = 21
# mem.city = "北京" #:我追加了一个实例属性"city"
# print("姓名:%s,年龄%d,城市:%s"%(mem.name,mem.age,mem.city))
# if __name__ == "__main__":
# main()
#:这时程序就会抛出错误,因为__slots__函数的缘故,导致对象在实例化属性的时候只能实例化__slots__函数内指定的属性

#:ps.但是并不会影响类添加属性的操作
# class Member:
# __slots__ = ("name","age")
# def main():
# mem = Member()
# mem.name = "杨洋"
# mem.age = 21
# Member.city = "北京" #:直接引用类,去添加属性
# print("姓名:%s,年龄%d,城市:%s"%(mem.name,mem.age,Member.city)) #:这里修改为打印类的属性
# if __name__ == "__main__":
# main()

# 结论:__slots__类变量的作用就是为了限制对象在实例化的时候防止用户实例化更多的属性,从而导致类属性之间的格式不一致性,如果你要写一个非常严谨的类,要求用户必须严格的执行实例化属性,那么就需要加上__slots__变量

python的__slots__变量

原文:https://www.cnblogs.com/yandh/p/13818065.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!