代码之家  ›  专栏  ›  技术社区  ›  Stefan Jaritz

pythonic如何创建对自己的python类实例的引用并使用它?

  •  0
  • Stefan Jaritz  · 技术社区  · 8 年前

    class dataPoint(object):
        def __init__(self, name, typeUUID, value = None):
            self.name = name
            self.typeUUID = typeUUID
            self.value = value
    

    我喜欢定义一个方法,它给我这个对象的引用(无复制构造函数等)。可能是这样:

    def getRef(self):
        return ???
    

    这些参考文献我喜欢在不同的列表中使用。我喜欢用来设置数据点的属性/调用函数的引用。下面是一些伪代码:

    # define a conatiner with datapoints    
    myContainer = [dataPoint("temperature","double",273.15), dataPoint("power","double",230), dataPoint("errorcode","uint32",666)]
    
    # define interfaces which refers to the datapoints
    interface1 = [ref("temperature"), ref("power")]
    
    interface2 = [ref("errorcode"), ]
    
    interface3 = [ref("temperature"), ref("power"), ref("errorcode")]
    # set temperature to 300K
    ref("temperature") = 300.0
    
    # interfaces
    print (interface1[ref("temperature")]) --> 300K
    print (interface3[ref("temperature")]) --> 300K
    

    1 回复  |  直到 8 年前
        1
  •  1
  •   Tom Dalton    8 年前

    class DataPoint:
        instances = {}
    
        def __init__(self, name, typeUUID, value=None):
            self.name = name
            self.typeUUID = typeUUID
            self.value = value
    
            self.instances[name] = self
    
        @classmethod
        def get(cls, name):
            return cls.instances[name]
    

    然后你可以这样使用它:

    >>> d1 = DataPoint("foo", "12345")
    >>> d2 = DataPoint("bar", "67890")
    
    >>> DataPoint.get("foo")
    <DataPoint object at 0x.........>
    
    推荐文章