资讯专栏INFORMATION COLUMN

[Python]实现Python类的公共属性

ernest.wang / 3137人阅读

摘要:背景今天看到有人问的类有没有类似公共属性的特性,就是修改了某个实例的对应属性,该类的所有实例的对应属性都随之修改,想了想用了一个辅助的单例模式的类解决了问题。代码演示感想要活用设计模式和它们的组合。

背景

今天看到有人问Python的类有没有类似公共属性的特性,就是修改了某个实例的对应属性,该类的所有实例的对应属性都随之修改,想了想用了一个辅助的单例模式的类解决了问题。

思路

修改一个实例另一个实例也跟着修改,听起来很像单例模式的特性,但又只针对一个属性,所以可以借用一个辅助的类。

代码
class Attr():
    attr = {}
    def __init__(self):
        self.__dict__ = self.attr
class Myclass():
    def __init__(self):
        self.attr = Attr()
    @property
    def value(self):
        return self.attr.value
    @value.setter
    def value(self, value):
        self.attr.value = value
演示
In [47]: a = Myclass()

In [48]: b = Myclass()

In [49]: a.value = 1

In [50]: b.value
Out[50]: 1

In [51]: b.value = 2

In [52]: a.value, b.value
Out[52]: (2, 2)
感想

要活用设计模式和它们的组合。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38369.html

相关文章

  • Python进程专题7:托管对象

    摘要:连接带远程管理器对象,该对象的地址在构造函数中支出。在当前进程中运行管理器服务器。启动一个单的子进程,并在该子进程中启动管理器服务器。如果无法序列号对象将引发异常。 上一篇文章:Python进程专题6:共享数据与同步下一篇文章:Python进程专题8:分布集群的消息传递 进程不支持共享对象,上面描述的创建共享值和数组,但都是指定的特殊类型,对高级的Python对象(如:字典、列表、用...

    DevYK 评论0 收藏0
  • Python 面向对象编程OOP (一) 类,对象,属性,访问权限

    摘要:面向对象编程之旅编程是什么大家好,作为小白,最近学习了很多编程的知识,因为脑容量有限,特此一一按照学习顺序记录下来,如果哪里有错误,还请大神尽快指出,以免误导他人。。。继承也允许把一个派生类的对象作为一个基类对象对待。 Python面向对象编程之旅 OOP编程是什么 大家好,作为小白,最近学习了很多Python OOP编程的知识,因为脑容量有限,特此一一按照学习顺序记录下来,如果哪里有...

    hiyayiji 评论0 收藏0
  • Python面向对象的三大特性封装、继承、多态

      小编写这篇文章的主要目的,主要是来给大家介绍关于Python的一些事情,主要还是涉及到面对面对象编程的一些实例,其中,主要涉及到的内容涵盖封装、继承、多态等多种形式,就具体的形式,下面就给大家详细解答下。  Python是一门面向对象的语言。面向对象都有三大特性:封装、继承、多态。  下面分别来说说这三大特性:  1、封装  隐藏对象的属性和实现细节,仅对外提供公共访问方式。在python中用...

    89542767 评论0 收藏0
  • python面试题

    摘要:今天我们介绍的主角是在类的继承里面非常常用,它解决了子类调用父类方法的一些问题,父类多次被调用时只执行一次,优化了执行逻辑,下面我们就来详细看一下。 1 谈谈你对面向对象的理解? 面向对象的编程---object oriented programming,简称:OOP,是一种编程的思想。OOP把对象当成一个程序的基本单元,一个对象包含了数据和操作数据的函数。面向对象的出现极大的提高了编...

    jeffrey_up 评论0 收藏0
  • 假装用某米赛尔号的角度看Python面向对象编程

    摘要:而后面函数返回的是对象中的。中的方法用于初始化类的实例对象。因为某米赛尔号精灵有数千只使用继承的方法可以大大减少代码量且当需要 老玩家回归:挂一张目前的阵容 showImg(https://segmentfault.com/img/bVbnFaS?w=787&h=246);哎, 菜是原罪啊。。。。。。 类和对象 下面我们正式创建自己的类, 这里我们使用Python自定义某米赛尔号的精灵...

    Heier 评论0 收藏0

发表评论

0条评论

ernest.wang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<