Posts: 6 Threads: 2 Joined: Mar 2019 Mar-28-2019, 07:00 AM (This post was last modified: Mar-28-2019, 07:00 AM by icm63.) Class import datetime as dt class Defaults: """Storage of Default Values""" dbConStr = "pass:Name:Database;" baseDate = dt.datetime(2000,12,31) baseVal = int(100) class myStructure: """ My custom data structure for arrays """ def __init__(self, date1=dt.datetime(2000,12,31), num1=0, str1="Nothing"): self.date1 = date1 self.num1 = num1 self.str1 = str1 class MySmartList(): """ Smart list with field data IDs """ def __init__(self): data = [] def AddNewRec(self, date1="05/01/1950", num1=0, str1="Nothing"): #Accepted date format 05/01/1950 zDate = dt.datetime.strptime(date1,"%m/%d/%Y") k = myStructure(zDate, num1, str1) data.append(k) trying it out # Smart List myData =[] my.MySmartList.AddNewRec(myData,date1 = "05/01/1950",num1=100,str1='Test0') my.MySmartList.AddNewRec(myData,date1 = "05/02/1950",num1=101,str1='Test1') my.MySmartList.AddNewRec(myData,date1 = "05/03/1950",num1=102,str1='Test2') Get error on bold line 5 >> data.append(k) def AddNewRec(self, date1="05/01/1950", num1=0, str1="Nothing"): #Accepted date format 05/01/1950 zDate = dt.datetime.strptime(date1,"%m/%d/%Y") k = myStructure(zDate, num1, str1) data.append(k) Newbie here, what am i doing wrong? Posts: 2,167 Threads: 35 Joined: Sep 2016 Add self. in front of both data in MySmartList Note: when you have an error, please post the full error traceback in error tags. Posts: 6 Threads: 2 Joined: Mar 2019 Mar-28-2019, 04:12 PM (This post was last modified: Mar-28-2019, 06:28 PM by Yoriz.) changed the data.append(k) to self.data.append(k) class MySmartList(): """ Smart list with field data IDs """ def __init__(self): self.data = [] def AddNewRec(self, date1="05/01/1950", num1=0, str1="Nothing"): #Accepted date format 05/01/1950 zDate = dt.datetime.strptime(date1,"%m/%d/%Y") k = myStructure(zDate, num1, str1) self.data.append(k) My error now is Error: Traceback (most recent call last): File "C:\Users\RTT\Documents\Visual Studio 2017\Projects\Python_Test_Project\Python_Test_Project\Test1.py", line 48, in <module> my.MySmartList.AddNewRec(myData,date1 = "05/01/1950",num1=100,str1='Test0') File "C:\Users\RTT\Documents\Visual Studio 2017\Projects\Python_Test_Project\Python_Test_Project\myClass.py", line 33, in AddNewRec self.data.append(k) AttributeError: 'list' object has no attribute 'data'
From prev post, what do you mean self infront of MySmartList?? Posts: 2,167 Threads: 35 Joined: Sep 2016 Make an instance of MySmartList then call the instance's AddNewRec method Don't pass in a list to MySmartListit has its own internal list my_smart_list = my.MySmartList() my_smart_list.AddNewRec(date1 = "05/01/1950",num1=100,str1='Test0') my_smart_list.AddNewRec(date1 = "05/02/1950",num1=101,str1='Test1') my_smart_list.AddNewRec(date1 = "05/03/1950",num1=102,str1='Test2') Posts: 6 Threads: 2 Joined: Mar 2019 Mar-28-2019, 08:33 PM (This post was last modified: Mar-28-2019, 08:34 PM by icm63.) Getting there my class import datetime as dt class Defaults: """Exaample of Storage of Default Values""" dbConStr = "pass:Name:Database;" baseDate = dt.datetime(2000,12,31) baseVal = int(100) class myStructure: """ My custom data structure for arrays """ def __init__(self, date1=dt.datetime(2000,12,31), num1=0, str1="Nothing"): self.date1 = date1 self.num1 = num1 self.str1 = str1 class MySmartList(): """ Smart list with field data IDs """ def __init__(self): self.data0 =[] #Add new records to data0 list via data structure object def AddNewRec(self,date1="05/01/1950", num1=0, str1="Nothing"): #Accepted date format 05/01/1950 zDate = dt.datetime.strptime(date1,"%m/%d/%Y") self.data0.append(myStructure(zDate, num1, str1)) My smart list with a structure myData=my.MySmartList() myData.AddNewRec(date1 = "05/01/1950",num1=100,str1='Test0') myData.AddNewRec(date1 = "05/02/1950",num1=101,str1='Test1') myData.AddNewRec(date1 = "05/03/1950",num1=102,str1='Test2') for index, myData in enumerate(myData): print(index, myData.str1 + ' -- ' + str(myData.num1) + ' -- ' + str(myData.date1)) Error on this line: for index, myData in enumerate(myData): Traceback (most recent call last): File "C:\Users\RTT\Documents\Visual Studio 2017\Projects\Python_Test_Project\Python_Test_Project\Test1.py", line 54, in <module> for index, myData in enumerate(myData): TypeError: 'MySmartList' object is not iterable any ideas? Posts: 4,216 Threads: 97 Joined: Sep 2016 You need enumerate(myData.data). Your class isn't a list, it just contains one. This is what I was saying in the other thread about overriding the other magic methods that sequences use (in this case __iter__) or sub-classing from a class that already has those methods. Posts: 2,167 Threads: 35 Joined: Sep 2016 for index, myData in enumerate(myData.data0): Posts: 6 Threads: 2 Joined: Mar 2019 |