Как вызвать атрибуты функции и списка и изменить её значение?
Есть примерно такой код
class Rheology:
def __init__(self):
self.rpm_600 = 0
self.rpm_300 = 0
self.rpm_200 = 0
self.rpm_100 = 0
self.rh.rpm_6 = 0
self.rh.rpm_3 = 0
def visc(self):
pv = self.rpm_600 - self.rpm_300
return pv
def func_1():
return self.rh.rpm_6 * self.rh.rpm_3
def func_2():
pass
rh = Rheology()
func_list = [rh.rpm_600, rh.rpm_300]
for i in func_list:
# не знаю как правильно написать...
i = int(input('Введите значение'))
print('Решение 1: ', rh.visc())
print('Решение 2: ', rh.func_1())
Можно таким образом или иным, перебирая список переменных из списка, присваивать им значение? Т.е. хочу избавится от огромной кучи кода типа:
rh = Rheology()
rh.rpm_600 = int(input('Введите значение'))
rh.rpm_300 = int(input('Введите значение'))
rh.rpm_200 = int(input('Введите значение'))
rh.rpm_100 = int(input('Введите значение'))
rh.rpm_6 = int(input('Введите значение'))
rh.rpm_3 = int(input('Введите значение'))
Ответы (2 шт):
Автор решения: S. Nick
→ Ссылка
Попробуйте так:
class Rheology:
# def __init__(self):
# self.rpm_600 = 0
# self.rpm_300 = 0
def visc(self, rpm_600, rpm_300):
self.rpm_600 = rpm_600
self.rpm_300 = rpm_300
pv = self.rpm_600 - self.rpm_300
return pv
rh = Rheology()
_list = []
for i in range(2):
_list.append(int(input(f'Введите значение {i+1}: ')))
print(rh.visc(*_list))
Update
Попробуйте так:
class Rheology:
def __init__(self, kwargs):
self.rpm_600 = kwargs['rpm_600']
self.rpm_300 = kwargs['rpm_300']
self.rpm_200 = kwargs['rpm_200']
self.rpm_100 = kwargs['rpm_100']
self.rpm_6 = kwargs['rpm_6']
self.rpm_3 = kwargs['rpm_3']
def visc(self):
pv = self.rpm_600 - self.rpm_300
return pv
def func_1(self):
return self.rpm_6 * self.rpm_3
def func_2(self):
pass
_dict = {
'rpm_600': 0,
'rpm_300': 0,
'rpm_200': 0,
'rpm_100': 0,
'rpm_6': 0,
'rpm_3': 0,
}
for k in _dict:
_dict[k] = int(input(f'Введите значение {k}: '))
#print(_dict)
rh = Rheology(_dict)
print('Решение 1: ', rh.visc())
print('Решение 2: ', rh.func_1())
Автор решения: vadim vaduxa
→ Ссылка
class Rheology:
Arrts = ('rpm_600', 'rpm_300', 'rpm_200 ',)
def __init__(self, default=0, arrts=Arrts):
for a in arrts: setattr(self, a, default)
def new(self, arrts=Arrts):
for a in arrts: setattr(self, a, int(input(f'Введите значение {a}: ')))
rh = Rheology()
rh.new()
rh.new(['rpm_300', ])
print(rh.rpm_300)