Python 学习笔记 042

作者: 夜羽萧轩 | 来源:发表于2019-08-01 00:05 被阅读21次

    本节内容 对象属性和类属性 


    类属性 用类名来调用的属性 创建对象时会制作类属性的副本,将其做为对象属性保存调用

    类属性通过类名来调用 ,也可以通过对象来调用

    对象属性的优先级高于类属性

    对象属性通过对象来调用 

    二者同名使用 对象属性

    对象属性       #只针对于当前对象生效,对于类创建的其他对象没有作用

    动态的给对象添加对象属性 在init内添加 和在外部语句中添加

    对象属性 只针对于当前对象生效,对于类创建的其他对象没有作用

    #注意:以后千万不要讲对象属性与类属性重名,因为对象属性会屏蔽掉类属性。但是当删除对象属性后,在使用又能使用类属性了。

    尽可能少写类属性


    动态给实例添加属性和方法并调用

    动态添加属性 这体现了动态语言的特点(灵活)

    动态添加方法   给对象添加属性

    from types import MethodType

    def say(self):

        print("my name is " + self.name)

    per.speak = MethodType(say, per)

    per.speak()

    思考:如果我们想要限制实例的属性怎么办?  控制动态添加属性

    #比如,只允许给对象添加name,age,height,weight属性

    解决:定义类的时候,定义一个特殊的属性(__slots__),可以限制动态添加的属性

    class Person(object):

        __slots__ = ("name", "age", "speak")

     创建类的时候添加 __slots__  后面为元组 

    下节预告  通过@property正常访问对受限制访问的对象 pass


    2019年7月31日21:43:53 

    相关文章

      网友评论

        本文标题:Python 学习笔记 042

        本文链接:https://www.haomeiwen.com/subject/bjgorctx.html