我在 Python 3.8 中有一堂課
class SomeClass:
data=[]
def __init__(self,my_list=[]):
for v in my_list:
SomeClass.data.append(v)
一旦從一個串列中創建了一個物件,如下串列:
# The object always will be a list or a list of lists
first_object= [['abc', 17.67, 1.5],['ijk', 9.68, 2.3],['efg', 50.3, 3.8],['xyz', 25.5, 16.2]]
我需要在創建物件后,向前一個物件添加一個新串列并創建一個新串列。該類還應該具有將單個串列添加到物件中的選項,如下所示:
second_object = first_object ['wmk', 79, 2.3]
當我嘗試這樣做時,我收到此錯誤:
TypeError: unsupported operand type(s) for : 'SomeClass' and 'list'
我該如何解決這個問題?,在此先感謝
uj5u.com熱心網友回復:
你應該向類添加一個__add__函式,這樣你就可以向該類添加一個物件來做某事,在這種情況下,我提出了一個TypeError如果它不是串列但你可以做任何你想做的事情
代碼:
class SomeClass():
def __init__(self,list1):
self.data = list1
def __add__(self,obj):
if isinstance(obj,list):
return self.data obj
else:
raise TypeError("It is not a list!!")
所以你可以這樣做:
classinstance = SomeClass([1,2,3,4])
classinstance =[10,20,30,40,50,60,70,80]
print(classinstance)
輸出:
[1, 2, 3, 4, 10, 20, 30, 40, 50, 60, 70, 80]
uj5u.com熱心網友回復:
該類SomeClass只是如何存盤和處理資料的藍圖。您需要創建所謂的類實體,在其中用實際資料填充類。
class SomeClass:
def __init__(self,my_list=[]):
self.data=[]
for v in my_list:
self.data.append(v)
first_object = SomeClass([['abc', 17.67, 1.5],['ijk', 9.68, 2.3],['efg', 50.3, 3.8],['xyz', 25.5, 16.2]])
second_object = SomeClass(first_object.data ['wmk', 79, 2.3])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/421578.html
標籤:
