我有一个类,可以选择将串行端口作为参数。我想创建一个枚举函数,该函数将返回一个具有唯一端口的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
但是我不太确定递归地创建这样的类实例是否是一种好的做法。最好将枚举函数拉出来并使其独立于类而存在吗?
答案 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()