Оригинальный вопрос:
Метод __init__
вызывается только при создании объектов.
Например:
o = something()
Создает экземпляр класса something
(и сохраняет его как o
) и выполняет метод __init__
.
Дальнейшие (другие) вызовы методов, такие как метод getting
, для объекта o
не будут повторно выполнять метод __init__
.
Возможное решение - переместить код, в который вы добавляете список, в вызываемый вами метод:
class something():
def __init__(self):
self.xx = []
def getting(self, y):
for i in range(2):
self.xx.append("{} and {}".format(y, i))
o = something()
o.getting("0")
o.getting("1")
print(o.xx)
Это дает результат, который вы описали, однако я не совсем уверен, чего вы пытаетесь достичь. Я также рекомендовал бы использовать альтернативные имена переменных / методов / классов, имена которых описывают их функциональные возможности в удобочитаемости.
Редактировать 2:
Вы по-прежнему перезаписываете ряд переменных, попробуйте:
class something():
def __init__(self):
self.xx = []
def getting(self, y):# string input "0" and "1"
self.y = y #I have two files. y is a file. So if I have 2 files, then it will store 2 times into the self.y. Example, file one have "0" and "1" string
self.fun1()
def fun1(self):
for i in range(2):
self.xx.append("{} and {}".format(self.y, i)) #After getting the self.y, then it will append it into self.xx.
# Example, 0 and 0 then 0 and 1; for y in "0" string.
# Next, 1 and 0 then 1 and 1; for y in "1" string
def take(self):
return self.xx
a = ["0", "1"]
aaa = something()
for x in a:
aaa.getting(x)
print(aaa.take())