Comment obtenir Python Objet Parent?
Donc, j'essaie de faire l'objet que d'un objet personnalisé 'à l'intérieur de. Voici un exemple.
Supposons que o est un objet - il n'a pas d'importance ce genre, il peut tout stocker des variables.
o = Object()
class Test():
def __init__(self):
self.parent = o ## This is where I fall off; I want to be able to access
## the o object from within the Test object
o.test = Test()
Alors, comment pourrais-je obtenir o de l'intérieur de Test? Je sais que je pourrais écrire la fonction de Test à passer dans avec
o.test = Test(o)
mais je préfère le faire de l'intérieur de la définition de la classe.
pouvez-vous illustrer ce que vous cherchez dans d'autres langues? Parce que ma compréhension de votre question n'a aucun sens dans un langage orienté objet...
Que voulez-vous être retourné lorsqu'il y a plusieurs pointeurs vers le même objet? Je ne pense pas que ce que vous recherchez est vraiment possible.
Eh bien, ce que je cherche est fondamentalement une méthode pour être en mesure d'atteindre un objet un objet d'une classe est un attribut de l'intérieur de la classe personnalisée. Permettez-moi de le dire comme ça - je ne peux pas définir le "parent" de la classe - c'est codé en dur dans un moteur de jeu que j'utilise. Ainsi, la classe A est déjà défini, et peut gérer des attributs comme un objet normal. La classe B est une classe personnalisée - je créer un objet de la Classe B et de le placer dans un attribut de la Classe A. Ainsi, parentobj.objb = ClassB(). Maintenant, est-il un moyen pour objb de dire ce parentobj est?
Que voulez-vous être retourné lorsqu'il y a plusieurs pointeurs vers le même objet? Je ne pense pas que ce que vous recherchez est vraiment possible.
Eh bien, ce que je cherche est fondamentalement une méthode pour être en mesure d'atteindre un objet un objet d'une classe est un attribut de l'intérieur de la classe personnalisée. Permettez-moi de le dire comme ça - je ne peux pas définir le "parent" de la classe - c'est codé en dur dans un moteur de jeu que j'utilise. Ainsi, la classe A est déjà défini, et peut gérer des attributs comme un objet normal. La classe B est une classe personnalisée - je créer un objet de la Classe B et de le placer dans un attribut de la Classe A. Ainsi, parentobj.objb = ClassB(). Maintenant, est-il un moyen pour objb de dire ce parentobj est?
OriginalL'auteur SolarLune | 2011-07-04
Vous devez vous connecter pour publier un commentaire.
(Je sais c'est une vieille question, mais puisque c'est sans réponse...)
Vous pouvez essayer de jouer avec le garbage collector. Va proposer à la recherche au niveau du module d'objets, mais certains rapide code de l'expérimentation a donné ceci: Essayez le
gc.get_referrers(*objs)
fonction.Les résultats ne sont pas simple de sorte que vous devrez appliquer votre logique propre pour comment déterminer qui
f
est celui que vous cherchez. Avis de la'f': <__main__.Foo object at ...>
ci-dessous:Pour les points de bonus, utilisez
gc.get_referents(*objs)
sur ceux à vérifier si les mêmesb
est dans leur liste.Quelques notes/avertissements:
init
ou une autre méthode. C'est ce que je voudrais faire, au lieu de ma suggestion ci-dessus.OriginalL'auteur aneroid
vous pourriez faire quelque chose comme ceci:
Test()
de réagir au assiged à un nomtest
sur un autre objeto
autres que pour cet objeto
de réagir à la cession deo.test
et pour dire l'objet affectéTest()
.OriginalL'auteur Dan D.
bien, je donno exactement ce que vous essayez. mais j'ai fait quelque chose comme ça.
et pour faire d'un parent, vous pouvez dire
Espère que cela va vous aider.
OriginalL'auteur RAHUL MISHRA
Si vous voulez pouvant être héritées des objets de le faire correctement
vous pouvez faire référence à un objet d'un gazillion reprises, par exemple
a = b = c = obj
. Lequel de ces trois .retour de propriétaire? Vous avezgc.get_referrers(*objs)
mais qui (peut-être) est-ce que vous voulez. Edit: oups, c'est VIEUX. Le mépris.OriginalL'auteur Jakob Bowyer
Êtes-vous parler à propos de l'héritage? C'est pas très clair ce que tu veux dire, mais si vous voulez juste pour ce faire:
Il fonctionne parfaitement.
**ndlr: Ce n'est pas du tout la façon dont vous devriez faire de l'héritage, si vous voulez le faire. Cependant, la façon dont vous décrivez votre problème, je pense que vous voulez pour créer une structure arborescente d'objets, pas de classes héritent des propriétés de chaque autre.
Il n'a pas à se référer à son code des droits de succession. Il a juste montré qu'il (l'OP) peut simplement accéder à
o
viaself.parent
à partir de l'intérieur de l'objet, parce que c'est ce qu'il a demandé, le plus probable.Ce phant0m dit. La manière dont il décrit son besoin en tant que "l'objet que d'un objet personnalisé 'à l'intérieur de," je ne pense pas que l'héritage est ce qu'il veut.
Ou même inheratence.
Non, comme kasnero et phant0m dit, ma question n'a rien à faire avec l'héritage, mais plutôt un problème de l'obtention d'un objet dans un autre objet.
OriginalL'auteur krasnerocalypse