CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Aide sur python

Barbe-Noir_2013
Barbe-Noir_2013
Niveau 7
03 mai 2018 à 17:06:49

C'est possible de faire en sorte que la classe A soit modelé sur la métaclasse MétaA

B hérite de A mais sans pour autant reprendre la métaclasse de A donc (MétaA) mais plutôt prendre en métaclasse MétaB ?

Pour résumer est ce qu'une classe fille est obligé d'avoir la même métaclasse que sa classe mère.

Message édité le 03 mai 2018 à 17:07:31 par Barbe-Noir_2013
godrik
godrik
Niveau 30
03 mai 2018 à 17:15:55

Rien compris. Quel langage? Donne un bout de code de ce que tu voudrais pouvoir faire.

Barbe-Noir_2013
Barbe-Noir_2013
Niveau 7
03 mai 2018 à 17:17:07

Le 03 mai 2018 à 17:15:55 godrik a écrit :
Rien compris. Quel langage? Donne un bout de code de ce que tu voudrais pouvoir faire.

langage python

Pour résumer est ce qu'une classe fille est obligé d'avoir la même métaclasse que sa classe mère ?

assis_toi
assis_toi
Niveau 9
03 mai 2018 à 17:46:12

Le 03 mai 2018 à 17:17:07 Barbe-noir_2013 a écrit :

Le 03 mai 2018 à 17:15:55 godrik a écrit :
Rien compris. Quel langage? Donne un bout de code de ce que tu voudrais pouvoir faire.

langage python

Pour résumer est ce qu'une classe fille est obligé d'avoir la même métaclasse que sa classe mère ?

bah oui vu qu'elle est sa fille

Barbe-Noir_2013
Barbe-Noir_2013
Niveau 7
03 mai 2018 à 18:33:20

Le 03 mai 2018 à 17:46:12 assis_toi a écrit :

Le 03 mai 2018 à 17:17:07 Barbe-noir_2013 a écrit :

Le 03 mai 2018 à 17:15:55 godrik a écrit :
Rien compris. Quel langage? Donne un bout de code de ce que tu voudrais pouvoir faire.

langage python

Pour résumer est ce qu'une classe fille est obligé d'avoir la même métaclasse que sa classe mère ?

bah oui vu qu'elle est sa fille

Du coup on peut pas faire en sorte qu'une classe fille qui hérite d'une classe mère ait une métaclasse différente, car sur le tutoriel open classroom il est clairement dit que c'est possible sauf que le mec ne donne aucun exemple, j'ai donc essayé mais je ne sais pas comment m y prendre

Seins_en_MP_SVP
Seins_en_MP_SVP
Niveau 10
04 mai 2018 à 00:05:26

Pour résumer est ce qu'une classe fille est obligé d'avoir la même métaclasse que sa classe mère ?

Après quelques recherches, il n'y a pas l'air d'y avoir de telle restriction, tu peux mettre la metaclasse que tu veux à ta classe fille.

Barbe-Noir_2013
Barbe-Noir_2013
Niveau 7
04 mai 2018 à 09:16:30

Le 04 mai 2018 à 00:05:26 Seins_en_MP_SVP a écrit :

Pour résumer est ce qu'une classe fille est obligé d'avoir la même métaclasse que sa classe mère ?

Après quelques recherches, il n'y a pas l'air d'y avoir de telle restriction, tu peux mettre la metaclasse que tu veux à ta classe fille.

Ok et comment on fait du coup ???

Barbe-Noir_2013
Barbe-Noir_2013
Niveau 7
04 mai 2018 à 12:06:51

Je viens de me rendre compte que je n'ai pas été très précis, je vais tenter d'expliquer avec des exemples.

class MetaA(type):
pass

class MetaB(type):
pass

class A(metaclass = MetaA): 
pass

class B(A):
pass

Dans cet exemple tu peux bien voir que ce n'est pas MetaB qui construit B mais MetaA car B hérite de A.

Hors dans le tutoriel que je suis il est dit :

" Héritant de A, B reprend la même métaclasse (sauf mention contraire explicite)."

Ici c'est le "sauf mention contraire explicite" qui m'intéresse, on peut donc faire en sorte que B hérite de A sans pour autant prendre en métaclasse MétaA mais MétaB donc elle aura une métaclasse différente de sa classe mère.

Le problème c'est que j'ai tout essayé, j'ai fait des recherches sur google, que ce soit en français ou en anglais, j'ai posé la question sur des forums, j'ai fait des testes moi même pour que B n'ait pas la même metaclasse que sa classe mère, mais rien n'a fonctionné.

Mes questions est de savoir si c'est possible ou pas, si oui comment faire pour y parvenir, car le code :

class B(A, metaclass = MetaB) ne fonctionne tout simplement pas.

Seins_en_MP_SVP
Seins_en_MP_SVP
Niveau 10
04 mai 2018 à 15:42:26

Le 04 mai 2018 à 12:06:51 Barbe-noir_2013 a écrit :
class B(A, metaclass = MetaB) ne fonctionne tout simplement pas.

Ben lis le message d'erreur :

TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases

class MetaA(type):
    pass

class MetaB(MetaA):
    pass

class A(metaclass = MetaA): 
    pass

class B(A, metaclass = MetaB):
    pass
Message édité le 04 mai 2018 à 15:42:52 par Seins_en_MP_SVP
Barbe-Noir_2013
Barbe-Noir_2013
Niveau 7
04 mai 2018 à 17:09:18

Le 04 mai 2018 à 15:42:26 Seins_en_MP_SVP a écrit :

Le 04 mai 2018 à 12:06:51 Barbe-noir_2013 a écrit :
class B(A, metaclass = MetaB) ne fonctionne tout simplement pas.

Ben lis le message d'erreur :

TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases

class MetaA(type):
    pass

class MetaB(MetaA):
    pass

class A(metaclass = MetaA): 
    pass

class B(A, metaclass = MetaB):
    pass

Merci d'avoir pris le temps de m'aider, je suis un peu mauvais en anglais (même si je le travail)

Seins_en_MP_SVP
Seins_en_MP_SVP
Niveau 10
04 mai 2018 à 19:28:27

De rien ! En français : la metaclasse d'une classe fille doit être une sous-classe de la metaclasse de tous ses parents.

Un autre exemple :

class MetaA(type):
    pass

class MetaB(type):
    pass

class A(metaclass = MetaA): 
    pass

class B(metaclass = MetaB):
    pass

class C(A,B):
    pass

ne marche pas : il va essayer de donner à C la metaclasse de A (MetaA), mais ce n'est pas une sous-classe de MetaB.

Solution :

class MetaA(type):
    pass

class MetaB(type):
    pass

class A(metaclass = MetaA): 
    pass

class B(metaclass = MetaB):
    pass

class MetaC(MetaA, MetaB):
    pass

class C(A,B, metaclass = MetaC):
    pass
Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment