L'obtention de conteneur/l'objet parent de l'intérieur python
En Python, est-il possible d'obtenir l'objet, dire Foo, qui contient un autre objet, d'un Bar, de Bar? Voici un exemple de ce que je veux dire
class Foo(object):
def __init__(self):
self.bar = Bar()
self.text = "Hello World"
class Bar(object):
def __init__(self):
self.newText = foo.text #This is what I want to do,
#access the properties of the container object
foo = Foo()
Est-ce possible? Merci!
- Vous avez une faute de frappe; dans
Foo.__init__
,self.bar = Foo()
devrait êtreself.bar = Bar()
. Sinon, vous avez une boucle infinie (dans le but de créer un Truc, vous devez d'abord créer un Foo). - Merci, Fixe! 🙂
Vous devez vous connecter pour publier un commentaire.
Passer une référence à la Barre de l'objet, comme suit:
Edit: comme l'a souligné @thomleo, cela peut causer des problèmes avec la collecte des ordures. La solution proposée est mis à http://eli.thegreenplace.net/2009/06/12/safely-using-destructors-in-python/ et ressemble
parent.parent.parent.etc
. Est-il plus propre façon de faire cela?del foo
elle ne sera pas forcément le détruire comme une référence à ça existe toujours dans les.parent
attribut de laBar
qu'il contient...Pas "automatiquement", parce que la langue n'est pas construit comme ça, et, en particulier, la langue est construite de telle qu'il n'existe aucun moyen de garantir que les Foo existe.
Cela dit, vous pouvez toujours le faire explicitement. Attributs, comme tous les autres identificateur en Python, ce sont juste des noms, pas d'espace de stockage pour les données; donc rien ne vous empêche de laisser la Barre d'instance ont affectée manuellement
foo
attribut qui est un Foo exemple, et vice-versa, dans le même temps.Que penser de l'utilisation de l'héritage: