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)
它有效,但我似乎无法找到任何人在网上这样做的例子(虽然我看起来不多).有什么理由我应该避免这样做吗?如果是这样,为什么以及什么是更好的选择呢?
如果你想动态创建类实例,这正是你在代码中所做的那样,那么我认为你的解决方案看起来很完美,并且是一种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)
如果你变得有冒犯精神,你可以尝试使用元类,但我会留下你的研究:-)