Как вернуть переменную класса в python, используя оператор return? - PullRequest
2 голосов
/ 09 марта 2019
import time

class curtime:

    timeu = time.asctime(time.localtime(time.time())) 
    timelist = timeu.split()
    day = timelist[0]
    month = timelist[1]
    date = timelist[2]
    time = timelist[3]
    year = timelist[4]

    def __init__():
        timeu = time.asctime(time.localtime(time.time())) 
        timelist = timeu.split()
        day = timelist[0]
        month = timelist[1]
        date = timelist[2]
        time = timelist[3]
        year = timelist[4]

    def year(self):
        print([self.year])
        return [self.year]

t1 = curtime()
years = t1.year()
print(years)    # this is giving output as [<bound method curtime.year of <__main__.curtime object at 0x00000285753E8470>>]

Я хочу, чтобы функция year(self) возвращала значение переменной year, но она возвращает

> [<bound method curtime.year of <__main__.curtime object at
> 0x00000285753E8470>>]

Есть идеи, как этого достичь? Также было бы хорошо, если бы значение можно было вернуть как целое число.

1 Ответ

0 голосов
/ 10 марта 2019

Вы на самом деле не так уж и далеко, чтобы заставить это работать!

Проблема, с которой вы столкнулись сейчас, состоит в том, что существует конфликт между именем year, являющимся атрибутом класса (эта строка: year = timelist[4]), и именем метода (эта строка: def year(self):.

Вы можете обновить свой код следующим образом:

import time


class curtime:

    def __init__(self):
        timeu = time.asctime(time.localtime(time.time())) 
        timelist = timeu.split()
        self._day = timelist[0]
        self._month = timelist[1]
        self._date = timelist[2]
        self._time = timelist[3]
        self._year = timelist[4]

    def year(self):
        return [self._year]


t1 = curtime()
years = t1.year()
print(years)

И вы получите правильный вывод: ['2019']

Обратите внимание, что здесь я удалил все переменные класса и исправил реализацию __init__, чтобы у каждого экземпляра было свое текущее время. Важным моментом является то, что я использую _year в качестве имени атрибута для приватного значения, которое вы храните, и year для функции, которую вы хотите использовать.

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