Python 中要建立物件清單:
宣告一個新變數並將其初始化為一個空列表。
使用 for 迴圈迭代範圍物件。
實例化一個類別以在每次迭代時建立一個物件。
將每個物件附加到清單中。
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
我們使用 range() 類別來取得可以迭代的範圍物件。
range 類別通常用於在 for 迴圈中循環特定次數。
print(list(range(5))) # ????️ [0, 1, 2, 3, 4] print(list(range(1, 6))) # ????️ [1, 2, 3, 4, 5]
如果我們需要從特定數字開始,請將 2 個參數(開始和停止)傳遞給 range() 類別。
在每次迭代中,我們使用目前數字建立 Employee 類別的實例並將結果附加到列表中。
list.append() 方法將一個項目加入到清單的末尾。
可以使用單一 id 參數實例化 Employee 類,但根據您的用例,您在建立物件時可能必須傳遞更多參數。
如果我們需要更改清單中物件的 print() 函數的輸出,請在類別中定義 __repr__() 方法。
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)
我們使用每個物件的 id 作為 print() 函數的輸出。
請注意 ,__repr__() 方法必須傳回一個字串。
如果我們的類別沒有在其 __init__() 方法中定義所有必要的屬性,請使用 setattr() 函數為每個物件新增屬性。
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 函數會為物件新增屬性。
此函數採用以下3 個參數:
object 新增屬性的物件
name 屬性的名稱
value 屬性的值
名稱字串可以是現有的或新的屬性。
getattr 函數傳回物件提供的屬性的值。
此函數將物件、屬性名稱和物件上不存在該屬性時的預設值作為參數。
或者,我們可以使用列表推導。
Python 中要建立物件清單:
使用清單推導來迭代 range 物件。
在每次迭代中,實例化一個類別以建立一個物件。
新清單將包含所有新建立的物件。
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
我們使用列表推導來迭代長度為 5 的範圍物件。
清單推導用於對每個元素執行某些操作或選擇滿足條件的元素子集。
在每次迭代中,我們實例化 Employee 類別以建立一個物件並傳回結果。
新清單包含所有新建立的物件。
選擇哪一種方法是個人喜好的問題。
清單推導非常直接且易於閱讀,但如果您需要在每個物件中新增額外的屬性或建立流程更加複雜,則必須使用 for 迴圈。
將項目附加到類別中的列表:
在類別的 __init__() 方法中初始化列表。
定義一個方法,它接受一個或多個項目並將它們附加到清單中。
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']
我們在類別的 __init__() 方法中將任務清單初始化為實例變數。
實例變數對於我們透過實例化類別所建立的每個實例都是唯一的。
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']
這兩個實例有單獨的任務清單。
我們也可以使用類別變數而不是實例變數。
類別變數由類別的所有實例共用。
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 變數是一個類別變數,所以它被所有實例共用。
我們將 add_task() 方法標記為類別方法。傳遞的第一個參數類別方法是類別。
list.append() 方法將一個項目加入到清單的末端。
但是,我們可能經常需要做的事情是將多個項目附加到清單中。
我們可以使用 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']
我們使用 list.extend() 方法將多個值附加到任務清單。
list.extend 方法採用可迭代物件(例如列表或元組)並透過附加可迭代物件中的所有項目來擴充列表。
以上是Python如何建立物件列表的詳細內容。更多資訊請關注PHP中文網其他相關文章!