我正在处理一个包含多个文件的大型python程序,我想出了一个问题。我从一个单独的文件创建一个类中的5个实例,但我不知道如何创建它后如何访问它。它也是封装的。我将展示一个非常简单的例子,说明我的问题是什么。此示例将使用两个文件file_1和file_2。
file_1
class Hello():
def set_num(self,one,two):
self.__first = one
self.__second = two
file_2
import file_1
def get_it():
I = -1
first_one = 50
second_one = 75
for i in range(5):
I+=1
first_one = first_one*2
second_one = second_one*1.5
newI = "a"+str(I)
new = file_1.Hello()
file_1.Hello.set_num(new,first_one,second_one)
def get_first():
print(a1._Hello__first)
所以我只运行file_2,get_it()。运行时应该创建它(所有幕后):
a1._Hello__first = 100
a1._Hello__second = 112.5
a2._Hello__first = 200
a2._Hello__second = 168.75
.....
这就是应该存储数据的地方。我需要的是从file_2访问该数据,我将在file_2中创建另一个将访问它的函数。 但我的问题是如何访问它? 这是file_2中的第二个函数,它应该返回100,但它会出错:
def get_first():
print(a1._Hello__first)
当我运行时,我得到“AttributeError:'str'对象没有属性' Hello _first'”。 所以我的问题是,我将如何访问这些数据?
答案 0 :(得分:0)
在创建一个类的多个实例时,将它们放在可以获取它们的某个位置通常是个好主意,例如:在dict
或list
之类的容器中:
instances = [] # list to hold instances
for _ in range(5):
first_one *= 2
second_one *= 1.5
new = file_1.Hello() # create instance
new.set_num(first_one, second_one) # set number
instances.append(new) # add to list
现在,当你想打印出来时:
for instance in instances:
print(instance._Hello__first)
print(instance._Hello__second)