Для углового 2 используйте
<div [ngClass]="{'active': dashboardComponent.selected_menu == 'mapview'}">Content</div>
у меня есть метакласс, который считывает эту информацию и выполняет некоторые настройки
Большинство фреймворков, использующих метаклассы, позволяют решить эту проблему. Например, Django :
subplan = ForeignKey('self')
subplan = SelfReferenceProperty()
Проблема с решениями, такими как добавление дополнительного свойства позже или использование __ new __
, заключается в том, что большинство метаклассов ORM ожидают свойства класса должны существовать во время создания класса.
Синус Python 3.7 и PEP 563 там является способом сделать это.
Добавляют импорт
from __future__ import annotations
, и следующий код будет работать
from __future__ import annotations
from typing import List
class Refer(object):
def __init__(self, x: Plan):
self.x: Plan = x
class Plan(object):
def __init__(self):
pass
subPlan: Refer(Plan())
Попробуйте следующее:
class Plan(SiloBase):
cost = DataField(int)
start = DataField(System.DateTime)
name = DataField(str)
items = DataCollection(int)
Plan.subPlan = ReferenceField(Plan)
ИЛИ используйте __ new __
вот так:
class Plan(SiloBase):
def __new__(cls, *args, **kwargs):
cls.cost = DataField(int)
cls.start = DataField(System.DateTime)
cls.name = DataField(str)
cls.items = DataCollection(int)
cls.subPlan = ReferenceField(cls)
return object.__new__(cls, *args, **kwargs)
Я понимаю, что происходит, имя класса не входит в область видимости внутри класса.
Не совсем так. Имя класса еще не определено при определении его содержимого (например, области видимости).
Нет, вы не можете этого сделать. Подумайте, что произойдет, если вы сделаете следующее:
OtherPlan = Plan
other_plan = OtherPlan()
При создании экземпляра other_plan
, как называется класс?
В любом случае, такие вещи лучше всего делать в __ new__
, который принимает параметр cls
, относящийся к классу.