0
votes

Comment faire référence à un objet à un autre?

Je suis toujours nouveau au langage de programmation Python. Pourriez-vous s'il vous plaît expliquer-moi comment faire référence à un objet à un autre. Par exemple, du code ci-dessous, j'ai besoin d'ajouter des amis à chaque objet. Cependant, les amis de l'objet sont des objets de personne.

IE. XYZ a des amis ABC, LMN où ABC, LMN est un objet personne.

ci-dessous est mon exemple de code xxx


2 commentaires

Cela ne devrait pas être compliqué. Un objet peut avoir un attribut de liste appelé amis qui est une liste d'objets de la même classe. Créez cette liste comme liste vide à l'initialisation (sauf si vous voulez que vos objets soient narcissiques qui sont amis avec eux-mêmes).


Votre objet nécessitera un attribut pour contenir les amis, dont il peut y avoir zéro ou plus dans aucun ordre particulier (sonne comme une liste). Et lorsque vous créez une nouvelle personne, ils n'ont pas d'amis tant que vous ne les ajoutez que vous savez comment initialiser l'attribut dans le __ init __ () .


3 Réponses :


0
votes

Semblable à la façon dont votre classe code> est un attribut code> nom code>, vous pouvez lui donner un attribut amis code> une liste de leurs amis. Cette liste pourrait stocker les attributs code> personne code> transmis en amis.

class Person:
    def __init__(self,name):
        self.name = name
        self.friends = []

    def add_friend(self,friend):
        self.friends.append(friend)  #friend is a reference to another person object.

if __name__ == '__main__':
    l_ist = [Person('XYZ'),Person('ABC'),Person('LMN')]
    l_ist[0].add_friend(l_ist[1])
    l_ist[0].add_friend(l_ist[2])
    print(l_ist[0].friends)
    print([f.name for f in l_ist[0].friends])


4 commentaires

Oui c'était compréhensif. Juste un doute de plus. Et si nous avions un objet plus de personne et que nous voulons ajouter_friend à l'aide de leur nom et non d'indexation dans la liste, car nous ne connaîtrons pas l'index d'une personne particulière.


Vous pouvez itérer via la liste et vérifier chaque personne.name pour voir si elle correspond à si elle correspond, et si oui, add_friend (personne) . Vous pouvez même créer une classe personnage contenant tous les objets de la personne créé et peut facilement les rechercher à l'aide de fonctions qui incluent cette fonctionnalité.


Merci Oliver. Vous avez été très utile signifie beaucoup.


Si une réponse ou un commentaire aide, veuillez les éviter, et si une réponse résout votre problème, veuillez l'accepter comme étant correcte ASNWER afin que les gens puissent savoir que la question a été résolue et que le problème n'a pas besoin d'être dépensé ici!



0
votes

Cela ajoutera le nom à la liste d'amis, pour ajouter une référence d'objet direct, faire self.friends.append (l_ist [1]) xxx


2 commentaires

Il convient de noter que cela ajoute des chaînes en tant qu'amais, pas de références à personne


@ Oliver.R a mis à jour la solution, ajoutez des détails pour ajouter l'objet lui-même et non la propriété d'objet



0
votes

dans Python Tout est traité comme objet. Pour ajouter un ami dans votre code, vous pouvez simplement ajouter:

l_ist [0] .Add_friend (l_ist [1])

Pour stocker les amis dans une liste dans l'instance de la personne elle-même, vous pouvez ajouter:

self.friends = []

et ensuite dans la méthode Add_friends:

Self.friends.Append (ami)


0 commentaires