我应该从一个类内部创建一个类实例吗?

时间:2018-06-28 14:24:05

标签: python python-3.x class

我有一个类,可以选择将串行端口作为参数。我想创建一个枚举函数,该函数将返回一个具有唯一端口的MyClass对象数组。我不确定这个枚举函数应该放在哪里。如果我将它放在这样的类中,感觉会更好:

class MyClass:
    def __init__(self, port=None):
        self.port = port

    def enumerate(self):
        ports = list(serial.tools.list_ports.comports())
        a = []
        for p in ports:
            a.append(MyClass(port))
        return a

但是我不太确定递归地创建这样的类实例是否是一种好的做法。最好将枚举函数拉出来并使其独立于类而存在吗?

1 个答案:

答案 0 :(得分:2)

如@jasonharper在评论中所述,您可以使用@classmethod装饰该方法

class MyClass(object):
    def __init__(self, port):
        self.port = port

    @classmethod
    def enumerate(cls):
        return (cls(p) for p in serial.tools.list_ports.comports())

您会这样称呼它:

my_classes = MyClass.enumerate()