专栏首页码生python __slots__ 限制属性

python __slots__ 限制属性

Python 是动态语言,允许我们动态的增加属性和方法
class Student(object):
    pass
    
s = Student()

s.name = "LiLei"

print(s.name)

>>> LiLei
同样也有办法限制属性的动态绑定
class Teacher(object):
    # 用tuple定义允许绑定的属性名称,但是此限制对子类不起作用
    __slots__ = ('name', 'age') 
如上所示可以规定 class Teacher 只可以绑定 nameage 两个属性
t = Teacher()

# 此处不能再添加属性
t.height = 1

>>> AttributeError: 'Teacher' object has no attribute 'height'

但是 slots 对子类是不起作用的

class MiddleTeacher(object):
    pass

s = MiddleTeacher()

s.height = 1

print(s.height)

>>> 1

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MessageHandler 高级用法二:原生调用JS 实现回调

    在 上一篇中 我们实现了原生和JS 的方法调用,这篇解决一下在 APP 中调用JS方法时怎么含有 JS 的回调

    onety码生
  • Flutter

    知道 Flutter 后,对 Flutter 的兴趣很大,感觉前景也是不错。 因为使用 React Native 已经一年时间了,其动态性无疑是最大亮点,但同...

    onety码生
  • ios OC swift run-time isa 指针

    onety码生
  • Leetcode 42 Trapping Rain Water

    Given n non-negative integers representing an elevation map where the width of ...

    triplebee
  • 监控mysql索引使用效率的脚本

    从这位仁兄的博客转载来的http://blog.itpub.net/133735/

    二狗不要跑
  • Angular 从入坑到挖坑 - 表单控件概览

    angular 入坑记录的笔记第三篇,介绍 angular 中表单控件的相关概念,了解如何在 angular 中创建一个表单,以及如何针对表单控件进行数据校验。

    程序员宇说
  • # Dart Socket之TCP粘包

    * RawServerSocket、RawSocket、ServerSocket、Socket

    用户1175783
  • A interesting inheritance question between self and super

    Mitchell
  • JS使用循环按指定倍数分割数组组成新的数组的方法

     今天一个新人同事问了我一个问题,就是有一个像下边这种不知道具体长度的数组,想以每4个为一组,重新组合为一个二维数组,很简单的需求只需要用到一个循环再去取余数就...

    李文杨
  • 在ubuntu下安装wordpress + sqlite

    apt-get install apache2 libapache2-mod-php5

    超级大猪

作者介绍

onety码生

什马互联网金融信息服务(上海)有限公司iOS高级工程师

什马互联网金融信息服务(上海)有限公司 · iOS高级工程师 (已认证)

精选专题

活动推荐

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动