Join us and get access to thousands of tutorials and a community of expert Pythonistas.

Unlock This Lesson

This lesson is for members only. Join us and get access to thousands of tutorials and a community of expert Pythonistas.

Unlock This Lesson

Avoid Duplicate Animals

00:00 I don’t want to enter if the animal is already in the location. So that just means I want to check whether the animal is currently already in the location where I’m trying to move it to and let me update location to new_location to make this a bit more descriptive.

00:17 And so I don’t want to enter if it’s already in the location. So I’m going to check if self._location is the same as the new_location.

00:29 So I’m using the identity operator here just to make sure that it’s actually the same objects, as if self._location points to the same object as new_location, then I don’t want to move the animal because it’s already there.

00:44 So in that case, I’m just going to return and return with a descriptive f-string that reads, in curly braces, “self.name and then “is already here”. So in that case, I’m not going to enter.

01:01 So I am ending the method call with a return statement after the check because no need to move it there, it’s already there. Okay, so let’s assume this is clear. So it’s not here.

01:15 I will do another check if self._location. So keep in mind that when I initialize one of these animal objects, then self._location, I’m setting it to None at the beginning.

01:31 So this check if self._location checks basically if it’s not None, but we can be more explicit here. So I’m going to say is not None.

01:41 So if it has a location object associated to it, in that case I want to exit from that location because it’s not the same location that I’m trying to move it to, and it’s also not None. In that case, I want to exit self._location.animals, so I’m accessing the animals list on that ._location object.

02:07 And I will remove self from that list.

02:12 Okay. Here I don’t want to return because this is just one of the steps. I first want to remove it from the old location and then I want to add it to the new location. So maybe I’m going to take a note here, maybe print a message. I’m not sure whether we’re going to need that or not, but it’s an option.

02:32 But otherwise, I think I’ve tackled these two tasks. That looks good. Before updating self._location, I want to check whether it’s already there. If it is, end the method call right there. If it isn’t, but it is already in a different location object, then I want to remove it from that other location object before putting it into new_location. Cool. Sounds good.

02:55 I think next we can update self._location and then tackle the next tasks.

Become a Member to join the conversation.