zoukankan      html  css  js  c++  java
  • slots

    class Student(object):
        pass
    s = Student()
    s.name = 'Michael'
    print(s.name)
    
    def set_age(self, age):
        self.age = age
    from types import MethodType
    s.set_age = MethodType(set_age, s) #给实例绑定一个方法
    s.set_age(25)
    print(s.age)
    #注意给一个实例绑定的方法对于另一个实例是不起作用的
    s2 = Student() #创建新的实例
    #为了给所有的实例都绑定方法,可以给class绑定方法
    def set_score(self, score):
        self.score = score
    Student.set_score = set_score
    s.set_score(100)
    print(s.score)
    s2.set_score(99)
    print(s2.score)
    
    #如果我们想限制类的属性,比如,只允许对Student实例添加name和age属性
    #__slots__定义的属性仅对当前类实例起作用,对继承的子类是不起作用的:
    #除非在子类中也定义__slots__,这样,子类实例允许定义的属性就是自身的__slots__加上父类的__slots__。
    class Student(object):
        __slots__ = ('name', 'age')
    s = Student()
    s.name = 'Michael'
    s.age = 25
    #s.score = 99 #因为__slots__('name', 'age')限制Student实例只能添加name和age属性
  • 相关阅读:
    java-工具代码
    idea-常用快捷键
    idea-环境配置
    mysql-常用命令
    Java IO流学习总结
    Java类加载机制
    Struts2标签 %{ } %{# }详解
    EL语法
    SQL语句
    在servlet转向jsp页面的路径问题
  • 原文地址:https://www.cnblogs.com/rain-1/p/5595014.html
Copyright © 2011-2022 走看看