Описание тега new-style-class

2 ответа

Как привести в порядок / исправить создание PyCXX нового класса расширения Python?

Я почти закончил переписывать оболочку C++ Python (PyCXX). Оригинал позволяет использовать классы расширения старого и нового стилей, но также позволяет создавать производные от классов нового стиля: import test // ok a = test.new_style_class(); // …
1 ответ

Подклассы из объекта - это то же самое, что и определение типа как метакласса?

Это класс в старом стиле: class OldStyle: pass Это класс в новом стиле: class NewStyle(object): pass Это также новый класс: class NewStyle2: __metaclass__ = type Есть ли какая-либо разница между NewStyle а также NewStyle2? У меня сложилось впечатлен…
2 ответа

Классы старого стиля, классы нового стиля и метаклассы

В Python 2.x все классы нового стиля наследуются от object неявно или явно. Тогда посмотрите на это: >>> class M(type): ... pass ... >>> class A: ... __metaclass__ = M ... >>> class B: ... pass ... >>> a = A() &gt…
08 май '12 в 08:02
4 ответа

Почему @foo.setter в Python не работает для меня?

Итак, я играю с декораторами в Python 2.6, и у меня возникают некоторые проблемы с их работой. Вот мой файл класса: class testDec: @property def x(self): print 'called getter' return self._x @x.setter def x(self, value): print 'called setter' self._…
28 фев '09 в 14:33
2 ответа

Классы старого и нового стиля в Python 2.7?

Возможный дубликат: Старый стиль и новые классы стиля в Python Каково текущее состояние дел с классами нового и старого стиля в Python 2.7? Я не часто работаю с Python, но смутно помню эту проблему. Документация, кажется, не затрагивает проблему воо…
11 дек '12 в 09:04
2 ответа

Является ли __dict__. Update() старым стилем?

Я запутался, читая о различиях в атрибутах newstyle и oldstyle. В этом примере: Использует ли этот код метод старого стиля для изменения атрибутов? В Event() в self.__dict__.update(kw) Я использую getattr, getattr или getattribute? за Dispatcher.dis…
03 авг '11 в 23:46
1 ответ

Что происходит, когда вы вызываете object.__new__?

Класс в старом стиле class Person(): _names_cache = {} def __init__(self,name): self.name = name def __new__(cls,name): return cls._names_cache.setdefault(name,object.__new__(cls,name)) ahmed1 = Person("Ahmed") ahmed2 = Person("Ahmed") print ahmed1 …
0 ответов

Мой метод не вызывается, когда я (неправильно?) Использую супер

class Document(object): def __init__(self,filename): self.filename = filename self.edits = 0 def write(self,content): print "D.write" fd = open(self.filename,"w") fd.write(content) fd.close() self.edits += 1 class HTMLDocument(Document): def edit(se…
2 ответа

Дескрипторы и предоставленные Python атрибуты

Я изучаю Python и пытаюсь лучше понять дескрипторы. Когда я смотрю на эту онлайн-книгу по Python: http://www.cafepy.com/article/python_attributes_and_methods/ch01s05.html, она говорит: Если attrname является специальным (то есть предоставленным Pyth…
10 май '12 в 14:47
3 ответа

Вызов init для нескольких родительских классов с super?

Возможный дубликат: Может ли Super справиться с множественным наследованием? Наследование Python? У меня есть структура класса (ниже), и я хочу, чтобы дочерний класс вызывал __init__ обоих родителей. Это возможно сделать "супер" или это просто ужасн…
2 ответа

Новый поиск атрибутов класса стиля для встроенных операций

Рассмотрим следующее различие между классическими классами и новыми классами стилей. class A(): data = 'abcd' def __getattr__(self, name): return getattr(self.data, name) class B(object): data = 'abcd' def __getattr__(self, name): return getattr(sel…
02 мар '14 в 14:50
3 ответа

Почему isinstance(nonnewstyle, object) возвращает true в Python 2.X?

Я читаю учебник по Python, и он охватывает различия классов нового стиля. Обратите внимание на следующий код в Python 2.X в интерпретаторе, который использует классические классы: class C: pass X = C() isinstance(X, object) #returns true isinstance(…
12 июл '17 в 21:00
3 ответа

Получить объект класса __dict__ без специальных атрибутов

Для получения всех определенных атрибутов класса я пытаюсь пойти с TheClass.__dict__ но это также дает мне особые качества. Есть ли способ получить только самоопределенные атрибуты или мне нужно "очистить" диктат сам?
17 дек '09 в 16:58
4 ответа

Наследование Python 2.x super __init__ не работает, если родитель не наследует от объекта

У меня есть следующий код Python 2.7: class Frame: def __init__(self, image): self.image = image class Eye(Frame): def __init__(self, image): super(Eye, self).__init__() self.some_other_defined_stuff() Я пытаюсь продлить __init__() метод, так что ко…
2 ответа

Какой предпочтительный синтаксис определения класса Python 3.x?

Как необходимо или полезно наследовать от объекта Python в Python 3.x? и класс Python наследует объект clear, больше нет необходимости наследовать от object при определении класса в Python 3. В качестве следствия этого, который напрямую не рассматри…
6 ответов

Какова цель создания подкласса класса "объект" в Python?

Все встроенные Python являются подклассами object и я сталкиваюсь со многими пользовательскими классами, которые тоже. Зачем? Какова цель класса object? Это просто пустой класс, верно?
2 ответа

Что такое простая служебная функция, позволяющая различать класс или объект Python старого типа и нового стиля

Какая простая служебная функция, позволяющая различать класс или объект Python старого и нового стиля? Являются ли следующие правильными / полными: isNewStyle1 = lambda o: isinstance(hasattr(o, '__class__') and o.__class__ or o, type) isNewStyle2 = …
24 май '12 в 02:46
0 ответов

В чем разница между объектом и типом в Python

У нас есть два типа классов в Python 2.x, как все знают, как классы старого стиля и новые классы стиля class OldStyle: pass type экземпляров классов Old style всегда instance class NewStyle(object): pass Новые классы стиля имеют преимущество method …
10 май '18 в 09:53
2 ответа

Вопрос, связанный с новым стилем Python

Я учусь на питоне и в настоящее время хакую класс с переменным количеством полей, как в примере "Связка именованных вещей". class Bunch: def __init__(self, **kwds): self.__dict__.update(kwds) Я также хочу написать __setattr__ в этом классе, чтобы пр…
10 июн '11 в 11:22
3 ответа

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

Могу ли я заставить родительский класс вызывать версию функции производного класса? class Base(object): attr1 = '' attr2 = '' def virtual(self): pass # doesn't do anything in the parent class def func(self): print "%s, %s" % (self.attr1, self.attr2)…
19 фев '10 в 16:25