Heim  >  Artikel  >  Backend-Entwicklung  >  So erstellen Sie eine Liste von Objekten in Python

So erstellen Sie eine Liste von Objekten in Python

PHPz
PHPznach vorne
2023-04-25 08:04:431541Durchsuche

So erstellen Sie eine Liste von Objekten in Python:

  • Deklarieren Sie eine neue Variable und initialisieren Sie sie mit einer leeren Liste.

  • Verwenden Sie eine for-Schleife, um über ein Bereichsobjekt zu iterieren.

  • Instanziieren Sie eine Klasse, um bei jeder Iteration ein Objekt zu erstellen.

  • Jedes Objekt an die Liste anhängen.

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

Wir verwenden die Klasse range(), um ein Bereichsobjekt zu erhalten, das iteriert werden kann. Die

range-Klasse wird normalerweise verwendet, um eine bestimmte Anzahl von Malen in einer for-Schleife zu durchlaufen.

print(list(range(5)))  # ????️ [0, 1, 2, 3, 4]
print(list(range(1, 6)))  # ????️ [1, 2, 3, 4, 5]

Wenn wir bei einer bestimmten Zahl beginnen müssen, übergeben Sie zwei Parameter (Start und Stopp) an die Klasse range().

In jeder Iteration erstellen wir eine Instanz der Employee-Klasse mit der aktuellen Nummer und hängen das Ergebnis an die Liste an. Die Methode

list.append() fügt ein Element am Ende der Liste hinzu.

Die Employee-Klasse kann mit einem einzigen ID-Parameter instanziiert werden, aber abhängig von Ihrem Anwendungsfall müssen Sie beim Erstellen des Objekts möglicherweise mehr Parameter übergeben.

Wenn wir die Ausgabe der Funktion print() der Objekte in der Liste ändern müssen, definieren Sie die Methode __repr__() in der Klasse.

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)

Wir verwenden die ID jedes Objekts als Ausgabe der print()-Funktion.

Bitte beachten Sie, dass die Methode __repr__() einen String zurückgeben muss.

Wenn unsere Klasse nicht alle notwendigen Attribute in ihrer __init__()-Methode definiert, verwenden Sie die Funktion setattr(), um jedem Objekt Attribute hinzuzufügen. Die Funktion

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'))

setattr fügt Attribute zu einem Objekt hinzu.

Diese Funktion benötigt die folgenden 3 Parameter:

  • object das Objekt zum Hinzufügen des Attributs

  • name der Name des Attributs

  • value der Wert des Attributs

Die Namenszeichenfolge kann sein bestehende oder neue Immobilie. Die Funktion

getattr gibt den Wert des vom Objekt bereitgestellten Attributs zurück.

Diese Funktion verwendet als Parameter das Objekt, den Eigenschaftsnamen und den Standardwert, wenn die Eigenschaft auf dem Objekt nicht vorhanden ist.

Alternativ können wir Listenverständnis nutzen.

Erstellen Sie eine Liste von Objekten mithilfe des Listenverständnisses.

So erstellen Sie eine Liste von Objekten in Python:

  • Verwenden Sie das Listenverständnis, um über Bereichsobjekte zu iterieren.

  • Instanziieren Sie in jeder Iteration eine Klasse, um ein Objekt zu erstellen.

  • Die neue Liste enthält alle neu erstellten Objekte.

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

Wir verwenden ein Listenverständnis, um über ein Bereichsobjekt der Länge 5 zu iterieren.

Listenverständnisse werden verwendet, um bestimmte Operationen für jedes Element auszuführen oder eine Teilmenge von Elementen auszuwählen, die eine Bedingung erfüllen.

In jeder Iteration instanziieren wir die Employee-Klasse, um ein Objekt zu erstellen und das Ergebnis zurückzugeben.

Die neue Liste enthält alle neu erstellten Objekte.

Welche Methode man wählt, hängt von den persönlichen Vorlieben ab.

Listenverständnisse sind sehr unkompliziert und leicht zu lesen. Wenn Sie jedoch jedem Objekt zusätzliche Eigenschaften hinzufügen müssen oder der Erstellungsprozess komplexer ist, müssen Sie eine for-Schleife verwenden.

Elemente an eine Liste in einer Klasse in Python anhängen

Elemente an eine Liste in einer Klasse anhängen:

Initialisieren Sie die Liste in der __init__()-Methode der Klasse.

Definieren Sie eine Methode, die ein oder mehrere Elemente akzeptiert und an die Liste anhängt.

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']

Wir initialisieren die Aufgabenliste als Instanzvariable in der __init__()-Methode der Klasse.

Instanzvariablen sind für jede Instanz, die wir durch Instanziieren einer Klasse erstellen, eindeutig.

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']

Die beiden Instanzen haben separate Aufgabenlisten.

Wir können anstelle von Instanzvariablen auch Klassenvariablen verwenden.

Klassenvariablen werden von allen Instanzen der Klasse gemeinsam genutzt. Die 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']

tasks ist eine Klassenvariable und wird daher von allen Instanzen gemeinsam genutzt.

Wir markieren die Methode add_task() als Klassenmethode. Der erste an eine Klassenmethode übergebene Parameter ist die Klasse. Die Methode

list.append() fügt ein Element am Ende der Liste hinzu.

Häufig müssen wir jedoch möglicherweise mehrere Elemente an eine Liste anhängen.

Mit der Methode list.extend() können wir Elemente eines iterierbaren Objekts an eine Liste anhängen.

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']

Wir verwenden die Methode list.extend(), um mehrere Werte an die Aufgabenliste anzuhängen. Die

list.extend-Methode nimmt ein iterierbares Objekt (z. B. eine Liste oder ein Tupel) und erweitert die Liste, indem alle Elemente im iterierbaren Objekt angehängt werden.

Das obige ist der detaillierte Inhalt vonSo erstellen Sie eine Liste von Objekten in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen