Есть ли другой способ получить значение из метода объекта в переменную объекта - PullRequest
0 голосов
/ 28 июня 2018

Я сделал код, который выглядит так

class Dog():
    def breed():
        return "rottwiller"

    def __init__(self, name, age, breed=breed()):
        self.name = name
        self.age = age
        self.breed = breed

Есть ли другой способ достижения значения "self.breed" вместо breed = breed (), но также с помощью метода функции.

например что-то похожее на это (я пробовал это, что не работает):

def __init__(self, name, age):
    self.name = name
    self.age = age
    self.breed = breed()

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Не следует называть атрибут и метод одним и тем же. При этом мои подозрения, почему вы задаете этот вопрос, говорят мне, что я должен указать вам на @property декоратор.

class Dog():
    def __init__(self, name, age, breed):
        self.name = name
        self.age = age
        self._breed = breed

    @property
    def breed(self):
        return self._breed

Для вашего примера это излишне, но если у вас есть класс Dog и конкретная порода, я думаю, вы думаете о подклассах и, возможно, более сложных вещах, чем здесь. По сути, декоратор @property позволит вам получить доступ к breed в качестве атрибута и вернет значение вызова функции, которую вы определили для него под тем же именем.

0 голосов
/ 28 июня 2018

С кодом выложен ряд проблем.

  1. Метод breed перезаписывается в методе __init__ при установке атрибута breed. Таким образом, метод должен быть переименован.
  2. В методе breed необходимо указать первый аргумент self.

    класс собак: def get_breed (self): возврат "Ротвиллер"

    def __init__(self, name, age):
        self.name = name
        self.age = age
        self.breed = self.get_breed()
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...