Из http://docs.python.org/2/reference/datamodel.html#new-style-and-classic-classes :
Вверх для Python 2.1 были использованы только классы старого стиля.
Концепция (старомодный) класс не имеет отношения к понятию типа: если
x
является экземпляром старый класс, тогдаx.__class__
обозначает классx
, ноtype(x)
всегда.
Это отражает тот факт, что все экземпляры старого стиля, независимо от их класса, реализованы с помощью одного встроенного типа, называемого экземпляром.
Классы нового стиля были введены в Python 2.2 для унификации понятий класса и типа. Класс нового стиля - это просто определяемый пользователем тип, не более, не менее.
Если x является экземпляром класса нового стиля, тогда
type(x)
обычно совпадает сx.__class__
(хотя это не гарантировано - экземпляру класса нового стиля разрешено переопределять значение, возвращенное дляx.__class__
).Основная мотивация для введения классов нового стиля заключается в предоставлении единой объектной модели с полная метамодель.
Он также имеет ряд непосредственных преимуществ, таких как возможность подкласса большинства встроенных типов или введение «дескрипторов», которые позволяют вычисленные свойства.
По соображениям совместимости , классы по-прежнему по-старому.
Классы нового стиля создаются путем указания другого класса нового стиля (например, типа) в качестве родительского класса или объекта «тип верхнего уровня», если никакой другой родитель не нужен.
Поведение классов нового стиля отличается от поведения классов старого стиля в ряде важных деталей в дополнение к тому, что возвращает тип.
Некоторые из этих изменений являются основополагающими для новой объектной модели, например, для вызова специальных методов. Другие - это «исправления», которые ранее не могли быть реализованы для проблем совместимости, таких как порядок разрешения метода в случае множественного наследования.
Python 3 имеет только классы нового стиля.
Независимо от того, являетесь ли вы подклассом из
blockquote>object
или нет, классы являются новыми в Python 3.
Это, кажется, добивается цели и сохраняет "набор" также.
execute_process(COMMAND getconf _NPROCESSORS_ONLN
OUTPUT_VARIABLE NB_PROCESSOR)
Используйте команду EXEC_PROGRAM и затем используйте опцию CACHE команды SET сохранить вывод к переменной как GTK_PKG_FLAGS. Затем используйте команду SET для добавления значения. Что-то вроде этого:
IF(NOT GTK_PKG_FLAGS)
EXEC_PROGRAM(pkg-config ARGS --cflags --libs gtkmm
OUTPUT_VARIABLE GTK_PKG_FLAGS)
SET(GTK_PKG_FLAGS "${GTK_PKG_FLAGS}" CACHE STRING "GTK Flags")
ENDIF(NOT GTK_PKG_FLAGS)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GTK_PKG_FLAGS}")
Ссылки: http://www.cmake.org/pipermail/cmake/2005-January/006051.html