0
votes

Comment réparer ce typeError pour l'argument «Self» manquant

Obtenir TypeError sur ces méthodes où j'ai utilisé auto code> en tant que paramètre manquant 1 argument de position requis: 'Self' code>. Si la méthode comporte plus de 1 arguments, y compris auto code>, il affiche une erreur similaire d'un autre argument de position manquant.

J'ai commencé par faire un objet singleton qui vérifie ses propres références pour rester la singularité. J'ai utilisé __ nouveau __ code> pour le faire. P>

core.py.py h2> xxx pré>

script.py h2> xxx PRE>

ERREURS: H2>
    print(c.__repr__())
TypeError: __repr__() missing 1 required positional argument: 'self'

    c.scene(640, 480)
TypeError: scene() missing 1 required positional argument: 'height'


4 commentaires

Supprimer auto de la fonction


Cette ligne def __new __ (CLS, * args, ** kwargs): devrait devenir comme ceci: def __New __ (Self, CLS, * args, ** kwargs):


@ abdullah.cu pourquoi est-ce? Il n'y a pas encore d'objet d'instance.


Appelez avec impression (REP (C)). Gardez l'auto-arg. "Et c. Reprendre __ () devrait fonctionner aussi". Non. Pardon.


3 Réponses :


0
votes

La bonne manière est utilisée REC comme ceci: xxx


0 commentaires

2
votes

oups, __ nouveau __ reçoit la classe et est censé renvoyer l'objet nouvellement créé! Lorsque votre code renvoie la classe elle-même, chose va mal. Vous devriez avoir: xxx

et de toute façon __ nouveau __ est une configuration avancée, avec principalement des objets immutables qui ne peuvent pas être configurés dans __ init __ . Dans votre exemple, vous devriez simplement le supprimer: xxx

c'est suffisant pour les objets courants. Vous pouvez en effet utiliser __ nouveau __ pour construire des singletons, et même l'utiliser pour construire des hiérarchies de singletons, ce qui signifie que chaque sous-classe de noyau sera un singleton: xxx < P> Veuillez noter que mon classe __ RECR __ utilise ID (auto) pour identifier l'objet et non la classe.

Démo: < Pré> xxx


5 commentaires

Mais cela ne fait pas un singleton.


Il ressemble à un parce que vous identifiez l'objet de la classe, et non avec la PO Custom Rep. Je soupçonne qu'il veut d'identifier (auto) non id (noyau).


Wow! Cette approche fonctionne, avec les chandatrices souhaitées. Merci.


@Sergeballesta Pourquoi ajoutez-vous ou non ISInstance (CLS._OBJ, CLS) ?. Semble inutile pour moi.


@Progmaticoo: C'est ce qui permet à noyau d'être utilisé comme classe de base pour Singleton Sous-classes: chaque sous-classe a son propre membre _OBJ .



0
votes

Votre code fonctionne presque. Jetez un coup d'œil ici: xxx


3 commentaires

J'ai essayé cela mais cela ne me donne pas l'opération souhaitée. Parce que cette façon, j'ai besoin de référencer d'autres variables de la classe par codage rigide pour toutes les variables. C'est pourquoi je veux faire référence à une classe Singleton. Et voir également pour les contenus édités pour aider à faire le cas utilisé pour ce que je veux utiliser.


@RUPAMKAIII Désolé, je ne comprends pas votre point quand vous dites "Parce que cette façon de faire référence à d'autres variables de la classe par codage rigide pour toutes les variables". C'est un singleton. Core et Core1 ne sont que deux références sur le même objet, il ressemble à ce que vous voulez utiliser, bien que je mets passez dans __ init __ juste pour que vous puissiez remplir de vos besoins, car ils n'étaient pas si clairs Comme maintenant que vous avez édité. Ma réponse est la même chose que Serge, à part un petit détail qui me semble inutile. Je l'ai patiné pour des éclaircissements.


@RUPAMKAIRI C'est bon, en fait, c'est nécessaire pour le sous-classement singleton.