Articles of inheritance

Comment définir une classe générique qui implémente une interface et contraint le paramètre type?

class Sample : IDisposable // case A { public void Dispose() { throw new NotImplementedException(); } } class SampleB where T : IDisposable // case B { } class SampleC : IDisposable, T : IDisposable // case C { public void Dispose() { throw new NotImplementedException(); } } Le cas C est la combinaison du […]

est-il possible de marquer la méthode surchargée comme finale

Dans C #, est-il possible de marquer une méthode virtuelle surchargée comme finale afin que les implémenteurs ne puissent pas la remplacer? Comment pourrais-je le faire? Un exemple peut faciliter la compréhension: class A { abstract void DoAction(); } class B : A { override void DoAction() { // Implements action in a way that […]

Est-il possible de changer la classe d’un object C ++ après une instanciation?

J’ai un tas de classes qui héritent toutes des mêmes atsortingbuts d’une classe de base commune. La classe de base implémente certaines fonctions virtuelles qui fonctionnent dans des cas généraux, tandis que chaque sous-classe ré-implémente ces fonctions virtuelles pour une variété de cas particuliers. Voici la situation: je veux que la spécialisation de ces objects […]

Impossible de convertir la liste en liste

J’ai une installation comme celle-ci: abstract class Foo {} class Bar : Foo {} et une méthode ailleurs de cette forme: void AddEnsortinges(List) {} J’essaie d’appeler cette méthode en utilisant une liste d’objects de type Bar List barList = new List() AddEnsortinges(barList); mais cela me donne l’erreur: ne peut pas convertir de la liste en […]

Comprendre la métaclasse et l’inheritance en Python

J’ai une certaine confusion concernant les méta-classes. Avec inheritance class AtsortingbuteInitType(object): def __init__(self,**kwargs): for name, value in kwargs.items(): setattr(self, name, value) class Car(AtsortingbuteInitType): def __init__(self,**kwargs): super(Car, self).__init__(**kwargs) @property def description(self): return “%s %s %s %s” % (self.color, self.year, self.make, self.model) c = Car(make=’Toyota’, model=’Prius’, year=2005, color=’green’) print c.description Avec meta class class AtsortingbuteInitType(type): def __call__(self, […]

Dissortingbution C ++ en classe dérivée

Comment puis-je lancer une classe dérivée? Les approches ci-dessous donnent toutes l’erreur suivante: Impossible de convertir de BaseType en DerivedType. Aucun constructeur ne pouvait prendre le type de source, ou la résolution de surcharge du constructeur était ambiguë. BaseType m_baseType; DerivedType m_derivedType = m_baseType; // gives same error DerivedType m_derivedType = (DerivedType)m_baseType; // gives same […]

Héritage C ++ et pointeurs de fonctions membres

En C ++, les pointeurs de fonction membres peuvent-ils être utilisés pour pointer vers des membres de classe dérivés (ou même de base)? EDIT: Peut-être un exemple aidera. Supposons que nous ayons une hiérarchie de trois classes X , Y , Z par ordre d’inheritance. Y donc une classe de base X et une classe […]

Comment fournir une initialisation supplémentaire pour une sous-classe de namedtuple?

Supposons que je possède un namedtuple comme ceci: EdgeBase = namedtuple(“EdgeBase”, “left, right”) Je veux implémenter une fonction de hachage personnalisée pour cela, alors je crée la sous-classe suivante: class Edge(EdgeBase): def __hash__(self): return hash(self.left) * hash(self.right) Puisque l’object est immuable, je veux que la valeur de hachage ne soit calculée qu’une seule fois, alors […]

Une manière de convertir un type de base en un type dérivé

Je ne suis pas sûr que ce soit une chose étrange à faire ou pas, ou si c’est comme si le code sentait … mais je me demandais s’il y avait un moyen (une sorte de motif oop serait bien) de “lancer” un type de base à une forme de son type dérivé. Je sais […]

En C #, est-il possible de convertir une liste en liste ?

Je veux faire quelque chose comme ça: List childList = new List(); … List parentList = childList; Cependant, étant donné que parentList est un ancêtre List of Child, plutôt qu’un ancêtre direct, je ne peux pas le faire. Existe-t-il une solution de contournement (autre que l’ajout de chaque élément individuellement)?