Maison > développement back-end > Tutoriel Python > Comment créer une liste d'objets en Python

Comment créer une liste d'objets en Python

PHPz
Libérer: 2023-04-25 08:04:43
avant
1565 Les gens l'ont consulté

Pour créer une liste d'objets en Python :

  • Déclarez une nouvelle variable et initialisez-la à une liste vide.

  • Utilisez une boucle for pour parcourir un objet range.

  • Instancier une classe pour créer un objet à chaque itération.

  • Ajoutez chaque objet à la liste.

class Employee():
    def __init__(self, id):
        self.id = id


list_of_objects = []

for i in range(5):
    list_of_objects.append(Employee(i))

print(list_of_objects)

for obj in list_of_objects:
    print(obj.id)  # ????️ 0, 1, 2, 3, 4
Copier après la connexion

Nous utilisons la classe range() pour obtenir un objet range qui peut être itéré. La classe

range est généralement utilisée pour boucler un nombre spécifique de fois dans une boucle for.

print(list(range(5)))  # ????️ [0, 1, 2, 3, 4]
print(list(range(1, 6)))  # ????️ [1, 2, 3, 4, 5]
Copier après la connexion

Si nous devons partir d'un nombre spécifique, passez 2 paramètres (start et stop) à la classe range().

À chaque itération, nous créons une instance de la classe Employee avec le numéro actuel et ajoutons le résultat à la liste. La méthode

list.append() ajoute un élément à la fin de la liste.

La classe Employee peut être instanciée avec un seul paramètre id, mais selon votre cas d'utilisation, vous devrez peut-être transmettre plus de paramètres lors de la création de l'objet.

Si nous devons modifier la sortie de la fonction print() des objets de la liste, définissez la méthode __repr__() dans la classe.

class Employee():
    def __init__(self, id):
        self.id = id

    def __repr__(self):
        return str(self.id)


list_of_objects = []

for i in range(5):
    list_of_objects.append(Employee(i))

# ????️ [0, 1, 2, 3, 4]
print(list_of_objects)
Copier après la connexion

Nous utilisons l'identifiant de chaque objet comme sortie de la fonction print().

Veuillez noter que la méthode __repr__() doit renvoyer une chaîne.

Si notre classe ne définit pas tous les attributs nécessaires dans sa méthode __init__(), utilisez la fonction setattr() pour ajouter des attributs à chaque objet. La fonction

class Employee():
    def __init__(self, id):
        self.id = id

    def __repr__(self):
        return str(self.id)


list_of_objects = []

for i in range(3):
    obj = Employee(i)

    setattr(obj, 'topic', 'Python')
    setattr(obj, 'salary', 100)

    list_of_objects.append(obj)

# ????️ [0, 1, 2]
print(list_of_objects)

for obj in list_of_objects:
    print(getattr(obj, 'topic'))
    print(getattr(obj, 'salary'))
Copier après la connexion

setattr ajoute des attributs à un objet.

Cette fonction prend les 3 paramètres suivants :

  • objecter l'objet pour ajouter l'attribut

  • name le nom de l'attribut

  • value la valeur de l'attribut

La chaîne de nom peut être propriété existante ou nouvelle. La fonction

getattr renvoie la valeur de l'attribut fourni par l'objet.

Cette fonction prend en paramètres l'objet, le nom de la propriété, et la valeur par défaut si la propriété n'existe pas sur l'objet.

Alternativement, nous pouvons utiliser des compréhensions de listes.

Créez une liste d'objets à l'aide de la compréhension de liste

Pour créer une liste d'objets en Python :

  • Utilisez la compréhension de liste pour parcourir des objets de plage.

  • À chaque itération, instanciez une classe pour créer un objet.

  • La nouvelle liste contiendra tous les objets nouvellement créés.

class Employee():
    def __init__(self, id):
        self.id = id

    def __repr__(self):
        return str(self.id)


list_of_objects = [
    Employee(i) for i in range(1, 6)
]

print(list_of_objects)  # ????️ [1, 2, 3, 4, 5]

for obj in list_of_objects:
    print(obj.id)  # 1, 2, 3, 4, 5
Copier après la connexion

Nous utilisons une compréhension de liste pour parcourir un objet plage de longueur 5.

Les compréhensions de liste sont utilisées pour effectuer certaines opérations sur chaque élément ou sélectionner un sous-ensemble d'éléments qui satisfont une condition.

À chaque itération, nous instancions la classe Employee pour créer un objet et renvoyer le résultat.

La nouvelle liste contient tous les objets nouvellement créés.

La méthode à choisir est une question de préférence personnelle.

Les compréhensions de listes sont très simples et faciles à lire, mais si vous devez ajouter des propriétés supplémentaires à chaque objet ou si le processus de création est plus complexe, vous devez utiliser une boucle for.

Ajouter des éléments à une liste dans une classe en Python

Ajouter des éléments à une liste dans une classe :

Initialisez la liste dans la méthode __init__() de la classe.

Définissez une méthode qui accepte un ou plusieurs éléments et les ajoute à la liste.

class Employee():

    def __init__(self, name, salary):
        self.name = name
        self.salary = salary
        self.tasks = []  # ????️ initialize list

    def add_task(self, task):
        self.tasks.append(task)

        return self.tasks


bob = Employee('Jiyik', 100)

bob.add_task('develop')
bob.add_task('ship')

print(bob.tasks)  # ????️ ['develop', 'ship']
Copier après la connexion

Nous initialisons la liste des tâches en tant que variable d'instance dans la méthode __init__() de la classe.

Les variables d'instance sont uniques pour chaque instance que nous créons en instanciant une classe.

class Employee():

    def __init__(self, name, salary):
        self.name = name
        self.salary = salary
        self.tasks = []  # ????️ initialize list

    def add_task(self, task):
        self.tasks.append(task)

        return self.tasks


alice = Employee('Fql', 1000)
alice.add_task('design')
alice.add_task('test')
print(alice.tasks)  # ????️ ['design', 'test']

bob = Employee('Jiyik', 100)
bob.add_task('develop')
bob.add_task('ship')
print(bob.tasks)  # ????️ ['develop', 'ship']
Copier après la connexion

Les deux instances ont des listes de tâches distinctes.

Nous pouvons également utiliser des variables de classe au lieu de variables d'instance.

Les variables de classe sont partagées par toutes les instances de la classe. La variable

class Employee():
    # ????️ class variable
    tasks = []

    def __init__(self, name, salary):
        self.name = name
        self.salary = salary

    @classmethod
    def add_task(cls, task):
        cls.tasks.append(task)

        return cls.tasks


Employee.add_task('develop')
Employee.add_task('ship')

print(Employee.tasks)  # ????️ ['develop', 'ship']

alice = Employee('Fql', 1000)
print(alice.tasks)  # ????️ ['develop', 'ship']

bob = Employee('Jiyik', 100)
print(bob.tasks)  # ????️ ['develop', 'ship']
Copier après la connexion

tasks est une variable de classe, elle est donc partagée par toutes les instances.

Nous marquons la méthode add_task() comme méthode de classe. Le premier paramètre passé à une méthode de classe est la classe. La méthode

list.append() ajoute un élément à la fin de la liste.

Cependant, nous devrons souvent faire est d'ajouter plusieurs éléments à une liste.

Nous pouvons ajouter des éléments d'un objet itérable à une liste en utilisant la méthode list.extend().

class Employee():

    def __init__(self, name, salary):
        # ????️ 实例变量(每个实例都是唯一的)
        self.name = name
        self.salary = salary
        self.tasks = []  # ????️ 初始化列表

    def add_tasks(self, iterable_of_tasks):
        self.tasks.extend(iterable_of_tasks)

        return self.tasks


bob = Employee('Jiyik', 100)

bob.add_tasks(['develop', 'test', 'ship'])

print(bob.tasks)  # ????️ ['develop', 'test', 'ship']
Copier après la connexion

Nous utilisons la méthode list.extend() pour ajouter plusieurs valeurs à la liste des tâches. La méthode

list.extend prend un objet itérable (tel qu'une liste ou un tuple) et étend la liste en ajoutant tous les éléments de l'objet itérable.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal