具有大量实例的Python类
我需要定义一个类和许多实例(超过30个,但代码中给出了其中的3个),以便能够在python模块文件之间共享它们。我对以下代码有问题(简化): 它给出了错误:具有大量实例的Python类,python,python-3.x,class,instance,Python,Python 3.x,Class,Instance,我需要定义一个类和许多实例(超过30个,但代码中给出了其中的3个),以便能够在python模块文件之间共享它们。我对以下代码有问题(简化): 它给出了错误: NameError: name 'abc1' is not defined 我试图在类中定义实例,以避免为它们定义实例并使代码变长 通过类定义30多个实例的pythonic方法是什么? 在类中定义实例的解决方案是什么 file1.txt的内容: a b c d e 这是否有助于: class MyClass: def __in
NameError: name 'abc1' is not defined
我试图在类中定义实例,以避免为它们定义实例并使代码变长
通过类定义30多个实例的pythonic方法是什么?
在类中定义实例的解决方案是什么
file1.txt的内容:
a
b
c
d
e
这是否有助于:
class MyClass:
def __init__(self, var):
self.var = var
with open('/file1.txt') as f:
objects = [MyClass(line) for line in f]
print(objects[0].var)
print(objects[1].var)
(让我们为该类命名为PEP8)
要定义“以pythonic方式的许多实例”,您可能需要使用列表理解。在打印语句中
abc1
和abc2
应该是def2
和def3
,我想abc{1,2,3}
仅在方法class1.read_file()
中可用,其他任何地方都不可用。abc1
等仅存在于函数范围内,您试图在函数不存在的地方引用它exits@Alex,不,它们是不同的东西。正如Chris所说,变量abc1
,abc2
,和abc3
仅在read\u file
功能中可用。除非您将它们设置为class1
的属性,否则您无法这样访问它们,但这样它们就不会是class1
本身的实例。@Alex,对于一个类中超过30个的实例,您建议如何使代码更具Python风格?(我有很多python模块文件,也会有很多类和实例在模块之间共享。我会将面向函数的代码转换为类代码。)据我所知,以这种方式定义实例是正确的。我说得对吗?(我的意思是在我的第一篇文章和你的答案中都使用这个结构。)我会接受这个答案,因为它回答了我的一个问题。是的,正确。这就是如何基于多个输入创建多个实例(此处为文件行)
class MyClass:
def __init__(self, var):
self.var = var
with open('/file1.txt') as f:
objects = [MyClass(line) for line in f]
print(objects[0].var)
print(objects[1].var)