Спасибо за пример, что метаклассы действительно можно создавать динамически. Поправлю в статье. Можно ли использовать в статье ваши слова о том, что можно управлять поведением класса разными способами?
Да, вы правы, здесь вообще лучше убрать упоминание о классах. Имелось в виду, что если функция isinstance возвращает True, то это еще не говорит о том, что первый объект экземпляр второго.
Очевидно что d нельзя создать с помощью только класса Animal, это его наследник.
Вы, верно, ошиблись. d не наследник Animal. Dog наследник Animal как я понял. И тут вы показали пример, о котором говорю и я. isinstance возвращает True, но второй аргумент не порождает первый.
isinstance не отвечает на вопрос "кто кого инстанцирует"(!)
В статье не было так написано. Я наоборот писал следующее:
Хотя если дословно переводить название функции (является экземпляром/есть экземпляр) ... При этом будет ошибкой как в наследовании сказать, что type порождает объекты целого типа ...
И я специально обозначил, что эта схема довольно условна. Говорится только о том, что и в каком порядке порождает объекты.
Не понял это:
он отвечает на вопрос ... "может ли А быть интерпретировано как экземпляр класса B" .
И что вы действительно думаете, что int может интерпретироваться как экземпляр object? int наследник object и не более.
А про какой вы язык говорите? Если объяснять как дело обстоит в питоне, то можно привести следующий код:
>>> class MyClass:
class_attribute = "Hello"
@classmethod
def class_method(cls):
print("This is a class method")
def instance_method(self):
print("This is an instance method")
>>> MyClass.class_attribute
'Hello'
>>> MyClass.class_method()
This is a class method
>>> MyClass.instance_method(object)
This is an instance method
У нас нет экземпляра, но мы можем получить доступ как к полям, так и методам класса. И даже к методам экземпляра (на это указывает параметр self), однако надо передать явно ссылку, потому что когда метод экземпляра вызывает от экземпляра, то в него автоматически (неявно) передается ссылка на этот объект. Здесь, для работы функции, ссылка не важна и передаем ее просто для того, чтобы у нас не поднялось исключение.
Насколько метаклассы эффективны? Сами по себе или в контексте их использования где-то в коде? Конечно, если можно их не использовать, то лучше поискать аналог без них. Потому что они, как минимум, усложняют читабельность.
Да, экземпляр класса - это инстанс этого класса. Что вы подразумеваете под бестелестностью? То, что у него нет ни полей, ни методов? Это не так. Все классы наследуются как минимум от object и обладают его атрибутами. Самое простое это магический метод __init__, а из полей можно привести в пример переменную __doc__. А экземпляры класса никак не влияют на его атрибуты.
Почему вы так решили?
REST это именно стиль для создания API - рекомендации. А SOAP уже полноценный протокол.
Спасибо за пример, что метаклассы действительно можно создавать динамически. Поправлю в статье. Можно ли использовать в статье ваши слова о том, что можно управлять поведением класса разными способами?
Да, вы правы, здесь вообще лучше убрать упоминание о классах. Имелось в виду, что если функция isinstance возвращает True, то это еще не говорит о том, что первый объект экземпляр второго.
Вы, верно, ошиблись. d не наследник Animal. Dog наследник Animal как я понял. И тут вы показали пример, о котором говорю и я. isinstance возвращает True, но второй аргумент не порождает первый.
В статье не было так написано. Я наоборот писал следующее:
И я специально обозначил, что эта схема довольно условна. Говорится только о том, что и в каком порядке порождает объекты.
Не понял это:
И что вы действительно думаете, что int может интерпретироваться как экземпляр object? int наследник object и не более.
А про какой вы язык говорите? Если объяснять как дело обстоит в питоне, то можно привести следующий код:
У нас нет экземпляра, но мы можем получить доступ как к полям, так и методам класса. И даже к методам экземпляра (на это указывает параметр self), однако надо передать явно ссылку, потому что когда метод экземпляра вызывает от экземпляра, то в него автоматически (неявно) передается ссылка на этот объект. Здесь, для работы функции, ссылка не важна и передаем ее просто для того, чтобы у нас не поднялось исключение.
Насколько метаклассы эффективны? Сами по себе или в контексте их использования где-то в коде? Конечно, если можно их не использовать, то лучше поискать аналог без них. Потому что они, как минимум, усложняют читабельность.
Да, экземпляр класса - это инстанс этого класса. Что вы подразумеваете под бестелестностью? То, что у него нет ни полей, ни методов? Это не так. Все классы наследуются как минимум от object и обладают его атрибутами. Самое простое это магический метод
__init__, а из полей можно привести в пример переменную__doc__. А экземпляры класса никак не влияют на его атрибуты.