Причина, по которой вы делаете self.attribute_name в методе класса, состоит в том, чтобы выполнить вычисление для этого атрибута экземпляров, а не использовать случайную переменную. Например:
class Car:
def __init__(self,size):
self.size = size
def can_accomodate(self,number_of_people):
return self.size> number_of_people
def change_size(self,new_size):
self.size=new_size
#works but bad practice
def can_accomodate_v2(self,size,number_of_people):
return size> number_of_people
c = Car(5)
print(c.can_accomodate(2))
print(c.can_accomodate_v2(4,2))
В приведенном выше примере вы можете видеть, что can_accomodate использует self.size, в то время как can_accomodate_v2 передает переменную размера, что является плохой практикой. Оба будут работать, но v2 плохая практика и не должны использоваться. Вы можете передать аргумент в метод класса, не связанный, например, с экземпляром / классом " number_of_people "в функции can_accomodate. Надеюсь это поможет.