Из 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.
Вы должны быть в состоянии использовать PLARE-PALL, ПРАВИЛИТЕЛЬНОЕ ПРАВИЛИТЕЛЬНОЕ ПРАВИЛЕНИЕ
для достижения этого эффекта, если вы хотите предотвратить заполнение прямоугольника из покраски, где круг. См. Этот пример из спецификации SVG (изображение ниже будет отображаться только в том случае, если ваш браузер поддерживает SVG):
по какой-то причине, я не могу, казаться, чтобы это работать с формами REGLE
и эллипс
, который вы предоставили в этом вопросе. Вот моя попытка :
Если вы хотите использовать <путь>
, вам нужно использовать fill-rule
. Но, конечно, можно изменить радиус окружности, которая является подпутью <путь>
, вам просто нужно освоить команду путь дуги.
К сожалению, кажется, что это невозможно сделать. Ни SVG 1.0, ни SVG 1.1 не поддерживают операции булевой формы, обрезка поддерживается по другим причинам. Самое близкое, что вы можете получить, это попытаться получить "перевернутую" форму для выполнения клиппинга.