Как я могу дать одинаковые методы для всех переменных в классе чистым питоническим способом? - PullRequest
0 голосов
/ 21 июня 2019

Я хочу дать возможность выполнять один и тот же метод для всех переменных в классе, то есть у меня есть класс Dog, с методами double и append

class Dog:

    def __init__ (self, height, weight, age):
        self.height = height
        self.weight = weight
        self.age = age

    def double:
        self.height = height * height

    def append:
        weight = list(weight).append(weight)

Допустим, я хочу разрешитьвсе остальные переменные высоты, веса и возраста тоже могут удваиваться и дополняться.Теперь я мог бы сделать это так, чтобы я мог корректировать один и тот же метод снова и снова для каждой переменной роста, веса, возраста и т. Д. И т. Д. Но это не выглядит чистым, чтобы выписывать один и тот же метод снова и снова для каждогопеременная, и это еще более нелепо, если, скажем, у меня есть 30 переменных и необходимо определить один и тот же метод для всех из них.Какой чистый, питонный способ сделать это?Должен ли я поместить класс внутри класса?Определить функцию?

1 Ответ

4 голосов
/ 21 июня 2019

Вы можете создать класс для переменных, которыми вы хотите манипулировать. Например:

class Parameter:
    def __init__(self, value):
        self.value = value

    def double(self):
        self.value = 2*value

    def append(self):
        self.value = list(value).append(value) # I'm not sure what is your intention with this.

Тогда вы используете это так:

class Dog:
    def __init__ (self, height, weight, age):
        self.height = Parameter(height)
        self.weight = Parameter(weight)
        self.age = Parameter(age)

и вы получаете доступ к таким значениям:

dog = Dog(20, 30, 7)
dog.height.value
dog.height.double()
dog.height.append()
...