Как я могу вырезать одну форму внутри другой?

Из 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 имеет только классы нового стиля.

Независимо от того, являетесь ли вы подклассом из object или нет, классы являются новыми в Python 3.

blockquote>

30
задан Ciro Santilli 新疆改造中心996ICU六四事件 21 January 2017 в 11:23
поделиться

3 ответа

Вы должны быть в состоянии использовать PLARE-PALL, ПРАВИЛИТЕЛЬНОЕ ПРАВИЛИТЕЛЬНОЕ ПРАВИЛЕНИЕ для достижения этого эффекта, если вы хотите предотвратить заполнение прямоугольника из покраски, где круг. См. Этот пример из спецификации SVG (изображение ниже будет отображаться только в том случае, если ваш браузер поддерживает SVG):

A pentagram and two circles, filled in red, with the centers cut showing the white background

по какой-то причине, я не могу, казаться, чтобы это работать с формами REGLE и эллипс , который вы предоставили в этом вопросе. Вот моя попытка :

A blue square with a circle inside

26
ответ дан 27 November 2019 в 06:59
поделиться

Если вы хотите использовать <путь>, вам нужно использовать fill-rule. Но, конечно, можно изменить радиус окружности, которая является подпутью <путь>, вам просто нужно освоить команду путь дуги.

.
2
ответ дан 27 November 2019 в 06:59
поделиться

К сожалению, кажется, что это невозможно сделать. Ни SVG 1.0, ни SVG 1.1 не поддерживают операции булевой формы, обрезка поддерживается по другим причинам. Самое близкое, что вы можете получить, это попытаться получить "перевернутую" форму для выполнения клиппинга.

-1
ответ дан 27 November 2019 в 06:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: