Как вызвать объект, инициализированный на номер? - PullRequest
0 голосов
/ 29 января 2020

Если бы у меня были эти функции в классе, как бы я вызывал их из другой функции в том же классе?

class Dead:
    def initial(self):
        self.amy = 1
        self.bob = 2
        self.cam = 3

    def __init__(self):
        self.initial()

    def get_number(self, number):

Как я мог бы вызвать self.amy, а взамен получить номер 1? В get_number я хотел бы добавить как self.amy к числу, чтобы вернуть сумму, но, как со всеми amy, bob, cam в одном go с функцией for, может быть? Я не уверен, как сформулировать этот вопрос, не испортив его полностью, извините.

1 Ответ

0 голосов
/ 29 января 2020

Вы можете изменить свой метод get_number, чтобы вместо этого принимать имя переменной-члена и динамически получать его. Например,

class Dead:
    def initial(self):
        self.amy = 1
        self.bob = 2
        self.cam = 3

    def __init__(self):
        self.initial()

    def get_number(self, name, number):
        return getattr(self, name) + number

Однако это более чем избыточно. Вы уже можете получить доступ к этим переменным из своего объекта, добавив метод для доступа к ним, добавив дополнительный слой без причины.

class Dead:
    def initial(self):
        self.amy = 1
        self.bob = 2
        self.cam = 3

    def __init__(self):
        self.initial()

dead = Dead()
dead.amy # 1
dead.bob # 2
dead.cam # 3
dead.amy += 1 # 2

Так что добавляется метод initial для инициализации переменных-членов. Нет причин не делать это прямо внутри вашего __init__.

class Dead:
    def __init__(self):
        self.amy = 1
        self.bob = 2
        self.cam = 3

Добавление бесполезных методов не делает ваш код лучше, а просто загрязняет его.

...