Как насчет этого:
def singleton(cls):
instance=cls()
cls.__new__ = cls.__call__= lambda cls: instance
cls.__init__ = lambda self: None
return instance
Используйте его как декоратор в классе, который должен быть одноэлементным. Например:
@singleton
class MySingleton:
#....
Это похоже на декоратор singleton = lambda c: c()
в другом ответе. Как и в другом решении, единственный экземпляр имеет имя класса (MySingleton
). Однако с помощью этого решения вы все равно можете «создать» экземпляры (фактически получить единственный экземпляр) из класса, выполнив MySingleton()
. Это также мешает вам создавать дополнительные экземпляры, выполняя type(MySingleton)()
(который также возвращает тот же экземпляр).
Я смог использовать в таблице стилей псевдоним, который я определил в webpack, используя следующее:
@import '~alias/variables';
просто префикс псевдонима ~
сделал трюк для меня, как было предложено в документации здесь
Поскольку ваш файл webpack.config.js
уже находится в папке /app
, не должен быть псевдоним:
resolve: {
alias: {
styles: path.join(__dirname, 'styles')
}
}
?
В моем случае зависимость является узловым модулем, поэтому я могу импортировать ее следующим образом:
@import '~node-module-name/variables';
И при использовании имени dir фактического имени узла мой редактор (PhpStorm) больше не показывает неразрешенную ошибку пути (проблема, упомянутая @tkiethanom). Похоже, мне нужно указать псевдоним в конфигурации webpack, если я хочу использовать импорт стиля sass (например, my-package/colors
вместо my-package/_colors.scss
), и кажется, что не имеет значения, что такое имя этого псевдонима, пока Я использую имя каталога узла узла
Другое исправление, связанное с этим объектом, удалить .scss
@import '~scss/common.scss';
должно быть
@import '~scss/common';
@material
и указать на path.resolve(__dirname, 'node_modules/@material')
без везения. Заданный вопрос stackoverflow.com/questions/48368639/…
– RoninCoder
21 January 2018 в 18:22