Как добавить атрибут методов, если его нет в __init__ - PullRequest
0 голосов
/ 17 сентября 2018

как я могу добавить атрибут к методу, который не __init__ из внешней функции.

например

class Year:
    def __init__(self):
        self._list = []
    def add_year(self,year):
        self._year = year
        self._list.append(self._year)
def main():
    year = 1998
    #how do I get this year into the year class to add to list?

Ответы [ 3 ]

0 голосов
/ 17 сентября 2018

Как указано в комментарии выше:

Создайте экземпляр:

yobj = Year()

и передайте значение, которое будет присвоено

year = 1998
yobj.add_year(year)
0 голосов
/ 17 сентября 2018

Метод __init__ не имеет ничего особенного, кроме того, что он выполняется при создании экземпляра объекта. Это означает, что вы можете назначить или получить атрибут для экземпляра из Year практически в любом месте вашего кода, а не только в __init__.

class Year:
    def __init__(self):
        # You can define an attribute in __init__
        self.year_list = []

    def add_year(self, year):
        # You can define and access an attribute in any method
        self.last_year_added = year
        self.year_list.append(year)

def main():
    year = 1998

    # You must instantiate a Year first
    my_year = Year()

    # Then execute the method add_year
    my_year.add_year(year)
    my_year.add_year(year + 1)

    print(my_year.year_list)  # [1998, 1999]
    print(my_year.last_year_added) # 1999


    # Note that you can even add attribute outside methods
    my_year.month = 'December'

    print(my_year.month) # December

main()
0 голосов
/ 17 сентября 2018

Ниже приведен один пример, посмотрите, поможет ли вам

class Dog:

    # Class Attribute
    species = 'mammal'

    # Initializer / Instance Attributes
    def __init__(self, name, age):
        self.name = name
        self.age = age

    # instance method
    def description(self):
        return "{} is {} years old".format(self.name, self.age)

    # instance method
    def speak(self, sound):
        return "{} says {}".format(self.name, sound)

# Instantiate the Dog object
mikey = Dog("Mikey", 6)

# call our instance methods
print(mikey.description())
print(mikey.speak("Gruff Gruff"))

Вывод, как показано ниже.

Mikey is 6 years old
Mikey says Gruff Gruff

, если вы хотите узнать больше об объектно-ориентированном программировании в Python, следуйтеследующий учебник - [https://realpython.com/python3-object-oriented-programming/][1]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...