Как ссылаться на переменную класса родительского класса без экземпляра

Это звучит как эта проблема Python . Если имя вашего компьютера имеет символы, отличные от ASCII, это не удастся. Вы можете:

  1. Выдать команду runerver с явным хостом и портом: python manage.py runserver 127.0.0.1:8000
  2. Измените имя компьютера на строку, содержащую только символы ASCII.

0
задан PascalVKooten 2 March 2019 в 12:59
поделиться

2 ответа

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

class A(): 
    a = [1, 2] 

class B(A): 
    a = A.a + [3]

тест :

print(A.a)  # access class variable using the class
print(B.a)  # access class variable using the class inheritance as B inherit from A
ins = A()   # initializing instance of class A
print(ins.a)  # access class variable using instance of the class

вывод :

[1, 2]
[1, 2]
[1, 2]

, как вы можете видеть, мы получаем то же самое выход.

0
ответ дан Sameh Farouk 2 March 2019 в 12:59
поделиться

Вы можете использовать A.a вместо супер.

но вы не можете вызвать super, если не создали экземпляр. как это:

class A():
    def __init__(self):        
        self.a = [1, 2]

class B(A):
    def __init__(self):
        super(B, self).__init__()
        self.a += [3]

Затем, когда вы создаете экземпляр:

i = B()

print(i.a)
>> [1, 2, 3]
0
ответ дан Mehrdad Pedramfar 2 March 2019 в 12:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: