Иногда это относится к
$ sysctl vm.overcommit_memory
vm.overcommit_memory = 2
Если вы установите его на:
$ sysctl vm.overcommit_memory=0
Он должен работать.
Это обычная конструкция на большинстве объектно-ориентированных языков, поддерживающих наследование. Когда дочерний класс (в вашем случае int
) наследуется от родителя (в вашем случае object
), говорят, что он имеет «is-a», отношения. То есть, int
является (или an) object
.
Это отношение «is-a» является тем, что проверяет isinstance
. Из документов:
Возвращает true, если аргумент object является экземпляром аргумента classinfo или (прямой, косвенный или виртуальный) подкласс.
blockquote>Существует аналогичная функция
issubclass
для проверки того же отношения для класса вместо экземпляра этого класса. Фактически, в большинстве случаевisinstance(x, y) == issubclass(type(x), y)
.
type
возвращает точный класс, из которого был создан объект. Это означает, что проверкаtype(3) == object
в точности эквивалентна проверкеint == object
. Надеюсь, вы увидите, что это однозначно неверно.В отношении связанного касания классы всегда должны быть одной и той же ссылкой в заданном пробеге интерпретатора, поэтому вы можете использовать
is
вместо==
для сравнения , Таким образом,type(3) is int
будет правдой. Вот как==
реализовано для всех типов, с которыми вы когда-либо столкнетесь.
Все является объектом в Python, который включает в себя ints, строки, функции и классы. Поэтому isinstance(a, object)
вернет вас True
. Но 3 - это integer
, который является sub_class
созданным из object
. Поэтому type(a)
может быть только int
.
Я могу привести пример.
Предположим, что у нас есть два класса: Sub - это sub_class of Base.
class Base:
def __init__(self):
self.kappa='kappa'
class Sub(Base):
def __init__(self):
super().__init__()
obj=Base()
int_rino=Sub()
print(isinstance(obj,Base))
print(isinstance(obj,Sub))
print(isinstance(int_rino,Base))
print(isinstance(int_rino,Sub))
print(type(int_rino)==Base)
Результат будет:
True
False
True
True
False
class
иinstance
, потому что классы являются экземплярами типа – Florian 13 July 2018 в 07:17type
или даже наследовать от него). Тем не менее, я чувствую, что это уровень педантичной детали, который OP не нужен и, возможно, не может справиться в данный момент. Также имейте в виду, что для функций, подобныхissubclass
иisinstance
, требуется i> класс или набор классов для их второго аргумента. Поэтому классы, независимо от метакласса, имеют здесь особую цель. – Mad Physicist 13 July 2018 в 07:23Type
по умолчанию , но это не обязательно true . (например: в большинстве API с использованием метаклассов в качестве заводского шаблона) – Florian 13 July 2018 в 07:41