动态创建类实例的最有效方法是什么?

Tim*_*imY 4 python performance class dynamic

我不知道从一开始我将拥有多少个类实例,所以我需要动态创建它们,但我还想保持代码整洁和可读.

我在考虑做这样的事情:

names = ['Jon','Bob','Mary']

class Person():
    def __init__(self, name):
        self.name = name

people = {}
for name in names:
    people[name] = Person(name)
Run Code Online (Sandbox Code Playgroud)

它有效,但我似乎无法找到任何人在网上这样做的例子(虽然我看起来不多).有什么理由我应该避免这样做吗?如果是这样,为什么以及什么是更好的选择呢?

sch*_*cki 5

如果你想动态创建类实例,这正是你在代码中所做的那样,那么我认为你的解决方案看起来很完美,并且是一种pythonic方式(尽管我不得不说当然还有其他方法).只是为了给你一些思考:你可以在类中注册/存储每个新实例:

class Person():
    people={}
    @classmethod
    def create(cls,name):
        person=Person(name)
        cls.people[name]=person
        return person
    def __init__(self, name):
        self.name = name
Run Code Online (Sandbox Code Playgroud)

如果你变得有冒犯精神,你可以尝试使用元类,但我会留下你的研究:-)