тип публикации, равный публикации, отображает список всех категорий на пользовательской странице, а не пользовательский тип публикации, простой в публикации

В Python class является исполняемым оператором. Когда интерпретатор находит оператор class, сначала выполняется весь код в блоке оператора class (в специальном пространстве имен), тогда все имена, определенные в этом блоке, используются для сборки объекта class (классы Python являются объектами), и, наконец, имя класса привязано к объекту класса в текущей области.

IOW, в блоке оператора класса, объект class еще не существует и, как следствие, это нельзя ссылаться ни в явном виде (по имени класса), ни в неявно (Python слишком сильно опровергает явное по неявным).

OTHO, объект родительского класса существует в этой точке, очевидно (иначе вы не могли бы наследовать от он), поэтому вы можете явно ссылаться на него:

class Parent(object):
   attr = something()


class Child(Parent):
   attr = Parent.attr
   # do something with Parent.attr

Обратите внимание, что атрибуты, определенные в блоке операторов класса (здесь attr), являются «атрибутами класса», атрибутами IOW объекта class и как таковые разделяются между примерами. Когда этот атрибут является изменяемым объектом, мутация его из одного экземпляра будет влиять на все экземпляры.

Также помните, что Python никогда не копирует ничего, поэтому код ниже:

class Parent(object):
   attr = {"foo": "bar"}


class Child(Parent):
   attr = Parent.attr
   attr["baaz"] = "quux"
   # or attr.update(baaz="quux") etc

WILL обновить Parent.attr.

0
задан Srashti sharma 19 January 2019 в 09:06
поделиться