Почему я не могу получить доступ к переменной класса, определенной в __init__, из-за пределов класса? - PullRequest
0 голосов
/ 19 мая 2018

Мне было интересно узнать о классах и о том, как я могу получить доступ к их значениям извне, либо распечатав их, либо используя функцию _str__.Я сталкивался с таким вопросом: Функция Python не имеет доступа к переменной класса

Затем я провел этот тест в Shell, но он не сработал, как ожидалось.Интересно, почему сработал другой ответ, но не этот.

(правка) На мой вопрос ответили, как создать экземпляр класса, а не переменные экземпляра.

>>> class test:
    def __init__(self):
        self.testy=0
    def __str__(self):
        return self.testy


>>> a=test
>>> b=test
>>> print(a)
<class '__main__.test'>
>>> a
<class '__main__.test'>
>>> a.testy
Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    a.testy
AttributeError: type object 'test' has no attribute 'testy'
>>> 

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Вы допустили ошибку при создании объектов, найдите следующие различия:

class test:
def __init__(self):
    self.testy=0
def __str__(self):
    return self.testy

a = test()
b = test()
a.testy
       output: 0

Что вы сделали:

c = test
d = test
c.testy
Traceback (most recent call last):
  File "<input>", line 1, in <module>
AttributeError: type object 'test' has no attribute 'testy'

Объяснение:

когда высоздаем objects для использования класса object = class_name()

**https://docs.python.org/3/tutorial/classes.html#class-objects

0 голосов
/ 19 мая 2018

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

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