class Example():
def __init__(self, a1):
self.a1 = a1
def addition(self, a2): #Оба метода содержат одинаковую переменную 'a2'
self.a2 = a2
self.addition = self.a1 + self.a2
print(self.addition)
def substraction(self, a2): #Здесь тоже 'a2'
self.a2 = a2
self.substraction = self.a1 - self.a2
print(self.substraction)
example = Example(5)
example.addition(10)
example.substraction(10)
# 1) С одной стороны, для меня 'a2' - это одно и то же значение (объяснено ниже)
# 2) С другой стороны, я хочу иметь возможность проверять каждый метод индивидуально, с новым значением
# Чтобы было понятнее, допустим, Класс - это человек
# А "a2" - это его возраст
# Но я не хочу присваивать классу возраст, при его создании, я хочу иметь возможность работать с ним отдельно
# Кроме того, я хочу иметь возможность посмотреть, что будет, если бы у данного человека был другой возраст
# Объяснение сумбурное, потому что у меня нет конкретного примера, просто данная концепция пришла в голову
############ Вопрос:
# Как превратить данный код из обезьяньего в лаконичный?
# Чтобы не писать каждый раз
# (self, a2)
# self.a2 = a2
# А то получается "Copy and paste programming"
############ Дополнительнйы вопрос:
# Разрешается ли вообще объявлять переменную с одним и тем же названием несколько раз?
# Или это совсем плохо?
############
Y2xhc3MgRXhhbXBsZSgpOgoJCglkZWYgX19pbml0X18oc2VsZiwgYTEpOgoJCXNlbGYuYTEgPSBhMQogCglkZWYgYWRkaXRpb24oc2VsZiwgYTIpOiAj0J7QsdCwINC80LXRgtC+0LTQsCDRgdC+0LTQtdGA0LbQsNGCINC+0LTQuNC90LDQutC+0LLRg9GOINC/0LXRgNC10LzQtdC90L3Rg9GOICdhMicKCQlzZWxmLmEyID0gYTIKCQlzZWxmLmFkZGl0aW9uID0gc2VsZi5hMSArIHNlbGYuYTIKCQlwcmludChzZWxmLmFkZGl0aW9uKQoKCWRlZiBzdWJzdHJhY3Rpb24oc2VsZiwgYTIpOiAj0JfQtNC10YHRjCDRgtC+0LbQtSAnYTInCgkJc2VsZi5hMiA9IGEyCgkJc2VsZi5zdWJzdHJhY3Rpb24gPSBzZWxmLmExIC0gc2VsZi5hMgoJCXByaW50KHNlbGYuc3Vic3RyYWN0aW9uKQoKCmV4YW1wbGUgPSBFeGFtcGxlKDUpCgpleGFtcGxlLmFkZGl0aW9uKDEwKQpleGFtcGxlLnN1YnN0cmFjdGlvbigxMCkKCiMgMSkg0KEg0L7QtNC90L7QuSDRgdGC0L7RgNC+0L3Riywg0LTQu9GPINC80LXQvdGPICdhMicgLSDRjdGC0L4g0L7QtNC90L4g0Lgg0YLQviDQttC1INC30L3QsNGH0LXQvdC40LUgKNC+0LHRitGP0YHQvdC10L3QviDQvdC40LbQtSkKIyAyKSDQoSDQtNGA0YPQs9C+0Lkg0YHRgtC+0YDQvtC90YssINGPINGF0L7Rh9GDINC40LzQtdGC0Ywg0LLQvtC30LzQvtC20L3QvtGB0YLRjCDQv9GA0L7QstC10YDRj9GC0Ywg0LrQsNC20LTRi9C5INC80LXRgtC+0LQg0LjQvdC00LjQstC40LTRg9Cw0LvRjNC90L4sINGBINC90L7QstGL0Lwg0LfQvdCw0YfQtdC90LjQtdC8CgojINCn0YLQvtCx0Ysg0LHRi9C70L4g0L/QvtC90Y/RgtC90LXQtSwg0LTQvtC/0YPRgdGC0LjQvCwg0JrQu9Cw0YHRgSAtINGN0YLQviDRh9C10LvQvtCy0LXQugojINCQICJhMiIgLSDRjdGC0L4g0LXQs9C+INCy0L7Qt9GA0LDRgdGCCiMg0J3QviDRjyDQvdC1INGF0L7Rh9GDINC/0YDQuNGB0LLQsNC40LLQsNGC0Ywg0LrQu9Cw0YHRgdGDINCy0L7Qt9GA0LDRgdGCLCDQv9GA0Lgg0LXQs9C+INGB0L7Qt9C00LDQvdC40LgsINGPINGF0L7Rh9GDINC40LzQtdGC0Ywg0LLQvtC30LzQvtC20L3QvtGB0YLRjCDRgNCw0LHQvtGC0LDRgtGMINGBINC90LjQvCDQvtGC0LTQtdC70YzQvdC+CiMg0JrRgNC+0LzQtSDRgtC+0LPQviwg0Y8g0YXQvtGH0YMg0LjQvNC10YLRjCDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINC/0L7RgdC80L7RgtGA0LXRgtGMLCDRh9GC0L4g0LHRg9C00LXRgiwg0LXRgdC70Lgg0LHRiyDRgyDQtNCw0L3QvdC+0LPQviDRh9C10LvQvtCy0LXQutCwINCx0YvQuyDQtNGA0YPQs9C+0Lkg0LLQvtC30YDQsNGB0YIKIyDQntCx0YrRj9GB0L3QtdC90LjQtSDRgdGD0LzQsdGD0YDQvdC+0LUsINC/0L7RgtC+0LzRgyDRh9GC0L4g0YMg0LzQtdC90Y8g0L3QtdGCINC60L7QvdC60YDQtdGC0L3QvtCz0L4g0L/RgNC40LzQtdGA0LAsINC/0YDQvtGB0YLQviDQtNCw0L3QvdCw0Y8g0LrQvtC90YbQtdC/0YbQuNGPINC/0YDQuNGI0LvQsCDQsiDQs9C+0LvQvtCy0YMKCiMjIyMjIyMjIyMjIyDQktC+0L/RgNC+0YE6CiMgINCa0LDQuiDQv9GA0LXQstGA0LDRgtC40YLRjCDQtNCw0L3QvdGL0Lkg0LrQvtC0INC40Lcg0L7QsdC10LfRjNGP0L3RjNC10LPQviDQsiDQu9Cw0LrQvtC90LjRh9C90YvQuT8KIyAg0KfRgtC+0LHRiyDQvdC1INC/0LjRgdCw0YLRjCDQutCw0LbQtNGL0Lkg0YDQsNC3IAojICAoc2VsZiwgYTIpCiMgIHNlbGYuYTIgPSBhMgojICDQkCDRgtC+INC/0L7Qu9GD0YfQsNC10YLRgdGPICJDb3B5IGFuZCBwYXN0ZSBwcm9ncmFtbWluZyIKIyMjIyMjIyMjIyMjINCU0L7Qv9C+0LvQvdC40YLQtdC70YzQvdC50Ysg0LLQvtC/0YDQvtGBOgojICDQoNCw0LfRgNC10YjQsNC10YLRgdGPINC70Lgg0LLQvtC+0LHRidC1INC+0LHRitGP0LLQu9GP0YLRjCDQv9C10YDQtdC80LXQvdC90YPRjiDRgSDQvtC00L3QuNC8INC4INGC0LXQvCDQttC1INC90LDQt9Cy0LDQvdC40LXQvCDQvdC10YHQutC+0LvRjNC60L4g0YDQsNC3PwojICDQmNC70Lgg0Y3RgtC+INGB0L7QstGB0LXQvCDQv9C70L7RhdC+PwojIyMjIyMjIyMjIyM=