Tag: класс

какая разница между dir (self) и self .__ dict__

Возможный дубликат: inspect.getmembers () vs __dict __. items () vs dir () class Base(): def __init__(self, conf): self.__conf__ = conf for i in self.__dict__: print i,"dict" for i in dir(self): print i,"dir" class Test(Base): a = 1 b = 2 t = Test("conf") Выход: __conf__ dict __conf__ dir __doc__ dir __init__ dir __module__ dir a […]

issubclass () возвращает Flase в том же классе, импортированном из разных путей

Цель заключалась в том, чтобы реализовать какую-то плагиновую структуру, где плагины являются подклассами (т.е. B) того же базового класса (то есть A). Базовый класс загружается стандартным импортом, тогда как подклассы загружаются с imp.load_module () из пути известного пакета (т.е. pkg). pkg/ __init__.py mod1.py class A mod2.py class B(pkg.mod1.A) Это отлично работало с реальными подклассами, т. […]

Python del по классам

Предположим, что у нас есть класс в python: class A(object): def __del__(self): print "Del!" __del__ вызывается удаление / сборка мусора любого экземпляра A Можно ли сделать то же самое для класса? Я хотел бы, чтобы был вызван какой-то метод, когда сам класс является сборкой мусора, который, как я полагаю, выполняется при выходе сценария. Спасибо заранее […]

Имя переменной класса Python vs __name__

Я пытаюсь понять взаимосвязь между переменной, которой назначен объект класса Python, и атрибутом __name__ для этого объекта класса. Например: In [1]: class Foo(object): …: pass …: In [2]: Foo.__name__ = 'Bar' In [3]: Foo.__name__ Out[3]: 'Bar' In [4]: Foo Out[4]: __main__.Bar In [5]: Bar ————————————————————————— NameError Traceback (most recent call last) <ipython-input-5-962d3beb4fd6> in <module>() —-> […]

почему python повторно использует экземпляр класса внутри функции

Я запускаю цикл for внутри функции, которая создает экземпляры класса для их проверки. вместо того, чтобы создавать новые классы, кажется, что они снова и снова используют одни и те же два. Есть ли что-то, что мне не хватает в том, как обрабатываются классы и переменные в методах python? как я могу сгенерировать новый объект для […]

Почему Django's Meta – это класс старого стиля?

Я заметил, что в моделях Django существует class Meta который содержит некоторые дополнительные определения о модели. Мой вопрос: почему это делается как класс старого стиля? (т. е. не object подкласса?) Есть ли причина для этого или это просто обычай? Могу ли я сделать это как класс нового стиля в моих проектах?

Почему Python не позволяет ссылаться на класс внутри его определения?

Python (3 и 2) не позволяет ссылаться на класс внутри своего тела (кроме методов): class A: static_attribute = A() Это приводит к появлению NameError во второй строке, потому что 'A' is not defined , в то время как это class A: def method(self): return A('argument') работает отлично. На других языках, например Java, первая проблема не […]

Разница между объявлением класса с классом vs Type?

Согласно этому руководству (см. Параграф «Простое использование метакласса»), существует разница между двумя объявлениями: >>> MyClass = type('MyClass', (), {}) >>> MyClass <class '__main__.MyClass'> а также >>> class Meta(type): … pass Что касается разницы, это то, что говорится в учебнике: __qualname__ класса – это не просто синтаксический сахар, но и некоторые дополнительные вещи, например, установка адекватных […]

переменные python, классы

Уважаемый Все, Попытка узнать python, классы и как передать переменные между ними. Пройдя через учебное пособие здесь, и у меня возникают проблемы со следующей ошибкой: TypeError: unbound method scan() must be called with lexicon instance as first argument (got str instance instead) Может кто-то, пожалуйста, помогите мне понять это лучше? БЛАГОДАРЯ!!! class lexicon (object): def […]

Почему я могу использовать переменную в функции до ее определения в Python?

В моем коде ниже я определяю две функции. main и cube . Я хотел, чтобы main было началом моей программы, поэтому я назвал cube внутри main : >>> def main(): number = int(input('Enter a number: ')) cubed_number = cube(number) print("The number cubed is: ", cubed_number) >>> def cube(number): return number * number * number >>> […]

Python - лучший язык программирования в мире.