Tôi có một số câu trả lời hacky có khả năng là khủng khiếp ... nhưng tôi có rất ít kinh nghiệm vào thời điểm này.
xa:
class myClass[]:
myInstances = []
def __init__[self, myStr01, myStr02]:
self.myStr01 = myStr01
self.myStr02 = myStr02
self.__class__.myInstances.append[self]
myObj01 = myClass["Foo", "Bar"]
myObj02 = myClass["FooBar", "Baz"]
for thisObj in myClass.myInstances:
print[thisObj.myStr01]
print[thisObj.myStr02]
Một cách hack để hoàn thành việc này:
import sys
class myClass[]:
def __init__[self, myStr01, myStr02]:
self.myStr01 = myStr01
self.myStr02 = myStr02
myObj01 = myClass["Foo", "Bar"]
myObj02 = myClass["FooBar", "Baz"]
myInstances = []
myLocals = str[locals[]].split["'"]
thisStep = 0
for thisLocalsLine in myLocals:
thisStep += 1
if "myClass object at" in thisLocalsLine:
print[thisLocalsLine]
print[myLocals[[thisStep - 2]]]
#myInstances.append[myLocals[[thisStep - 2]]]
print[myInstances]
myInstances.append[getattr[sys.modules[__name__], myLocals[[thisStep - 2]]]]
for thisObj in myInstances:
print[thisObj.myStr01]
print[thisObj.myStr02]
Một hack 'thông minh' khác:
import sys
class myClass[]:
def __init__[self, myStr01, myStr02]:
self.myStr01 = myStr01
self.myStr02 = myStr02
myInstances = []
myClasses = {
"myObj01": ["Foo", "Bar"],
"myObj02": ["FooBar", "Baz"]
}
for thisClass in myClasses.keys[]:
exec["%s = myClass['%s', '%s']" % [thisClass, myClasses[thisClass][0], myClasses[thisClass][1]]]
myInstances.append[getattr[sys.modules[__name__], thisClass]]
for thisObj in myInstances:
print[thisObj.myStr01]
print[thisObj.myStr02]
Ví dụ Python để tạo danh sách các đối tượng:
Danh sách Python có thể giữ một danh sách các đối tượng lớp. Chúng ta có thể tạo một danh sách trống và nối nhiều đối tượng lớp vào danh sách này. Mỗi phần tử danh sách sẽ là một đối tượng và chúng tôi có thể truy cập bất kỳ thành viên nào của đối tượng đó như phương thức, biến, v.v. Lưu ý rằng bạn có thể nối các đối tượng lớp khác nhau vào cùng một danh sách.
Trong bài đăng này, tôi sẽ chỉ cho bạn cách tạo một danh sách các đối tượng trong Python.
Ví dụ 1: Danh sách các đối tượng [cùng một trường hợp lớp]:
class Student:
def __init__[self, name, age]:
self.name = name
self.age = age
studentList = []
studentList.append[Student["Alex", 20]]
studentList.append[Student["Bob", 21]]
studentList.append[Student["Ira", 15]]
for student in studentList:
print['Name : {}, Age : {}'.format[student.name,student.age]]
Trong ví dụ này, chúng tôi đang nối thêm các đối tượng cùng loại. Học sinh là một lớp có hai thuộc tính và tuổi. Lúc đầu, chúng tôi đã khởi tạo một danh sách trống của STRIENTLIST và thêm ba đối tượng sinh viên khác nhau vào danh sách này.
Vòng lặp được sử dụng để in cả hai thuộc tính của mỗi đối tượng trong danh sách đó.
Nó sẽ in đầu ra dưới đây:
Name : Alex, Age : 20
Name : Bob, Age : 21
Name : Ira, Age : 15
Ví dụ 2: Danh sách các đối tượng có các phiên bản lớp khác nhau:
class Student:
def __init__[self, name, age]:
self.name = name
self.age = age
class Subject:
def __init__[self, name]:
self.subjectName = name
data = []
data.append[Student["Alex", 20]]
data.append[Subject["Subject-A"]]
data.append[Student["Bob", 21]]
data.append[Subject["Subject-B"]]
data.append[Student["Ira", 15]]
for item in data:
if[isinstance[item, Student]]:
print['Name : {}, Age : {}'.format[item.name, item.age]]
else:
print['Subject : {}'.format[item.subjectName]]
Trong ví dụ này, chúng tôi có hai lớp học sinh và môn học khác nhau. Nhưng chúng tôi đang nối thêm các đối tượng của cả hai lớp này vào cùng một dữ liệu danh sách. Vòng lặp For là kiểm tra loại đối tượng trước khi in nội dung của nó.
Nó sẽ tạo ra đầu ra dưới đây:
Name : Alex, Age : 20
Subject : Subject-A
Name : Bob, Age : 21
Subject : Subject-B
Name : Ira, Age : 15
Hướng dẫn tương tự:
- Cách tạo từ điển từ hai danh sách trong Python
- Chương trình Python để tìm phần tử giữa của danh sách số ngẫu nhiên
- Chương trình Python để lặp qua danh sách theo thứ tự ngược lại
- Chương trình Python để xóa tất cả sự xuất hiện của một giá trị khỏi danh sách
- Cách xóa mục khỏi danh sách trong Python
- Chương trình Python để xóa tất cả các yếu tố trùng lặp khỏi danh sách