Your code has two logic problems:
self.list.index(index) in self.list doesn't do what you think it does, the index won't be in the list, the word may be
self.list.pop(index) would pop index, but it expects an actual index, which is not what you're passing to the method
Your code also suffers from horrible naming. To make a point, here's an almost working version of your code with your naming scheme dialed to 11:
class List:
def __init__(List, list):
List.list = list
def List(List, index):
if List.list.index(index) > -1:
List.list.pop(List.list.index(index))
else:
print("The value isn't in the list.")
list = List(["list", "List", "LIST", "list "])
list.List("list")
print(list.list)
list.List("not in list")
Output:
['List', 'LIST', 'list ']
Traceback (most recent call last):
File "F:\Project\Python\sandbox_310\my_list.py", line 15, in <module>
list.List("not in list")
File "F:\Project\Python\sandbox_310\my_list.py", line 6, in List
if List.list.index(index) > -1:
ValueError: 'not in list' is not in list
Here's a more reasonably named version, that catches the exception, so it works as you expect:
class MyList:
def __init__(self, xs):
self.xs = xs
def delete(self, x):
try:
self.xs.pop(self.xs.index(x))
except ValueError:
print("The value isn't in the list.")
example = MyList(["green", "blue", "yellow", "brown"])
example.delete("green")
print(example.xs)
example.delete("no")
Output;
['blue', 'yellow', 'brown']
The value isn't in the list.
And here's a streamlined version, which no longer throws an exception (because it checks whether it can remove before trying to do so, and not calling .index() which causes the error as well):
class MyList:
def __init__(self, xs):
self.xs = xs
def delete(self, x):
if x in self.xs:
self.xs.remove(x)
else:
print("The value isn't in the list.")
example = MyList(["green", "blue", "yellow", "brown"])
example.delete("green")
print(example.xs)
example.delete("no")
Of course, you could also just:
class MyList(list):
def safe_remove(self, x):
if x in self:
self.remove(x)
else:
print("The value isn't in the list.")
example = MyList(["green", "blue", "yellow", "brown"])
example.remove("green") # MyList *is* a list, so all standard methods work
print(example)
example.safe_remove("no") # but using the added safe_remove, you get what you want
Result:
['blue', 'yellow', 'brown']
The value isn't in the list.