【发布时间】:2021-03-25 15:05:02
【问题描述】:
我需要定义一个类和许多实例(超过 30 个,但代码中给出了其中的 3 个)以便能够在 python 模块文件之间共享它们。我对以下代码有疑问(简化):
class class1:
def __init__(self, var1):
self.var1 = var1
def read_file():
try:
f = open('/file1.txt')
read_text = f.readlines()
abc1 = class1((read_text[0]))
abc2 = class1((read_text[1]))
abc3 = class1((read_text[2]))
except:
abc1 = class1("text_1")
abc2 = class1("text_2")
abc3 = class1("text_3")
class1.read_file()
def1 = class1("abc")
def2 = class1("def")
def3 = class1("hjk")
print(def1.var1)
print(abc1.var1)
print(abc2.var1)
它给出了错误:
NameError: name 'abc1' is not defined
我试图在类中定义实例以避免为它们定义实例并使代码变长。
通过类定义超过 30 个实例的 Python 方法是什么? 在类中定义实例的解决方案是什么?
file1.txt 的内容:
a
b
c
d
e
【问题讨论】:
-
在你的打印语句中
abc1和abc2应该是def2和def3,我想?abc{1,2,3}只能在方法class1.read_file()中使用,其他地方都没有。 -
abc1等只存在于函数的范围内,你试图在它不退出的函数之外引用它 -
@Alex,不,它们是不同的东西。
-
正如克里斯所说,变量
abc1、abc2和abc3仅在read_file函数中可用。除非您将它们设为class1的属性,否则您无法像这样访问它们,但它们本身就不是class1的实例。 -
@Alex,对于一个类中超过 30 个的实例,您有什么建议以使代码更加 Pythonic? (我有很多 python 模块文件,也会有很多类和实例将在模块之间共享。我会将面向函数的代码转换为类代码。)
标签: python python-3.x class instance