471,305 Members | 1,233 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 471,305 software developers and data experts.

defining class and list

I want to create a list of integers and user will have the right to add into this list a number of elements that user wants. How can I do that?

Expand|Select|Wrap|Line Numbers
  1. class createList:
  2.       def __ini__(self):
  3.            self._listInt = list()
  4.  
  5.       def __addValue(self, newValue):
  6.            self._ListInt.append(newvalue)
  7.  
  8.  
  9. >>>AttributeError: createList intance has no attribute '_listInt'
  10.  
Oct 15 '07 #1
7 1317
ilikepython
844 Expert 512MB
I want to create a list of integers and user will have the right to add into this list a number of elements that user wants. How can I do that?

Expand|Select|Wrap|Line Numbers
  1. class createList:
  2.       def __ini__(self):
  3.            self._listInt = list()
  4.  
  5.       def __addValue(self, newValue):
  6.            self._ListInt.append(newvalue)
  7.  
  8.  
  9. >>>AttributeError: createList intance has no attribute '_listInt'
  10.  
You spelled your method wrong. It shuold be:
Expand|Select|Wrap|Line Numbers
  1. def __init__(self):
  2.  
Oct 15 '07 #2
It was a mistake of posting, the error message still remained

I found out that the some indicators in in lines ^_^

If I want to define a function to check whether an integer in list (return True or False), what should I do?
Expand|Select|Wrap|Line Numbers
  1. a=createList()
  2. a=addValue(2)
  3.  
  4. >> 2 in a
  5. >>error
Oct 15 '07 #3
ilikepython
844 Expert 512MB
It was a mistake of posting, the error message still remained

I found out that the some indicators in in lines ^_^

If I want to define a function to check whether an integer in list (return True or False), what should I do?
Expand|Select|Wrap|Line Numbers
  1. a=createList()
  2. a=addValue(2)
  3.  
  4. >> 2 in a
  5. >>error
You overload the in operator:
Expand|Select|Wrap|Line Numbers
  1. ...
  2.     def __contains__(self, obj):
  3.         # do whatever you want and return True or False
  4.  
Oct 16 '07 #4
You overload the in operator:
Expand|Select|Wrap|Line Numbers
  1. ...
  2.     def __contains__(self, obj):
  3.         # do whatever you want and return True or False
  4.  
First time see this, thank you very much ^_^

anyway, do we have a way to add n integers into the list? If I use

Expand|Select|Wrap|Line Numbers
  1. def __addValue(self, newValue):
  2.  
  3. # I can only add 1, however I want to do ListA.addvalue(2,3,4,5...) 
  4.  
  5.  
Oct 16 '07 #5
elcron
43
I want to create a list of integers and user will have the right to add into this list a number of elements that user wants. How can I do that?

Expand|Select|Wrap|Line Numbers
  1. class createList:
  2.       def __ini__(self):
  3.            self._listInt = list()
  4.  
  5.       def __addValue(self, newValue):
  6.            self._ListInt.append(newvalue)
  7.  
  8.  
  9. >>>AttributeError: createList intance has no attribute '_listInt'
  10.  
Watch out for capitalization self.listInt does not equal self.ListInt. As for the function you can either write a function like:
Expand|Select|Wrap|Line Numbers
  1. class createList:
  2.       def __init__(self):
  3.            self._listInt = list()
  4.  
  5.       def __addValue(self, newValue):
  6.            self._listInt.append(newvalue)
  7.  
  8.       def contains(self, item):
  9.             return item in self.listInt
  10.  
  11. test = createList()
  12. test.contains(someItem)
  13.  
Or operator overloading
Expand|Select|Wrap|Line Numbers
  1. class createList:
  2.       def __init__(self):
  3.            self._listInt = list()
  4.  
  5.       def __addValue(self, newValue):
  6.            self._listInt.append(newvalue)
  7.  
  8.       def __contains__(self, item):
  9.             return item in self.listInt
  10.  
  11. test = createList()
  12. someItem in test
  13.  
Here's a good link on emulating data types and you could always try subclassing a list.

Edit: Sorry for posting what was already stated I had to do something before I could finish posting.
Oct 16 '07 #6
Watch out for capitalization self.listInt does not equal self.ListInt. As for the function you can either write a function like:
Expand|Select|Wrap|Line Numbers
  1. class createList:
  2.       def __init__(self):
  3.            self._listInt = list()
  4.  
  5.       def __addValue(self, newValue):
  6.            self._listInt.append(newvalue)
  7.  
  8.       def contains(self, item):
  9.             return item in self.listInt
  10.  
  11. test = createList()
  12. test.contains(someItem)
  13.  
Or operator overloading
Expand|Select|Wrap|Line Numbers
  1. class createList:
  2.       def __init__(self):
  3.            self._listInt = list()
  4.  
  5.       def __addValue(self, newValue):
  6.            self._listInt.append(newvalue)
  7.  
  8.       def __contains__(self, item):
  9.             return item in self.listInt
  10.  
  11. test = createList()
  12. someItem in test
  13.  
Here's a good link on emulating data types and you could always try subclassing a list.

Edit: Sorry for posting what was already stated I had to do something before I could finish posting.
thank you very much for your help, I had finished this
Oct 16 '07 #7
bvdet
2,851 Expert Mod 2GB
Watch out for capitalization self.listInt does not equal self.ListInt. As for the function you can either write a function like:
Expand|Select|Wrap|Line Numbers
  1. class createList:
  2.       def __init__(self):
  3.            self._listInt = list()
  4.  
  5.       def __addValue(self, newValue):
  6.            self._listInt.append(newvalue)
  7.  
  8.       def contains(self, item):
  9.             return item in self.listInt
  10.  
  11. test = createList()
  12. test.contains(someItem)
  13.  
Or operator overloading
Expand|Select|Wrap|Line Numbers
  1. class createList:
  2.       def __init__(self):
  3.            self._listInt = list()
  4.  
  5.       def __addValue(self, newValue):
  6.            self._listInt.append(newvalue)
  7.  
  8.       def __contains__(self, item):
  9.             return item in self.listInt
  10.  
  11. test = createList()
  12. someItem in test
  13.  
Here's a good link on emulating data types and you could always try subclassing a list.

Edit: Sorry for posting what was already stated I had to do something before I could finish posting.
I made some minor modifications to the code you posted. The use of double preceeding underscores "privatizes" a variable - Python mangles the name of the method or attribute. A function or method will accept a variable number of parameters if an asterisk (*) is added to the last parameter name.
Expand|Select|Wrap|Line Numbers
  1. class createList:
  2.       def __init__(self, *args):
  3.            self._listInt = list(args)
  4.  
  5.       def __addValue(self, *newValue):
  6.            self._listInt.extend(newValue)
  7.  
  8.       def contains(self, item):
  9.             return item in self._listInt
  10.  
  11. test = createList(9,2,3,6,8)
  12. print test._listInt
  13. test._createList__addValue(21,22,23)
  14. print test._listInt
  15. print test.contains(9)
  16.  
  17.  
  18. class createList:
  19.       def __init__(self, *args):
  20.            self._listInt = list(args)
  21.  
  22.       def __addValue(self, *newValue):
  23.            self._listInt.extend(newValue)
  24.  
  25.       def __contains__(self, item):
  26.             return item in self._listInt
  27.  
  28. test = createList(22,23,24)
  29. print test._listInt
  30. test._createList__addValue(3,4,5,6)
  31. print test._listInt
  32. test._createList__addValue(36)
  33. print test._listInt
  34. print 36 in test
Output:

>>> [9, 2, 3, 6, 8]
[9, 2, 3, 6, 8, 21, 22, 23]
True
[22, 23, 24]
[22, 23, 24, 3, 4, 5, 6]
[22, 23, 24, 3, 4, 5, 6, 36]
True
>>>
Oct 16 '07 #8

Post your reply

Sign in to post your reply or Sign up for a free account.

Similar topics

10 posts views Thread by Joe Laughlin | last post: by
2 posts views Thread by Alex Feldman | last post: by
2 posts views Thread by lcaamano | last post: by
26 posts views Thread by Cliff Williams | last post: by
6 posts views Thread by Wayne Shu | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.