I have a class Animal and other animals inherit from it (e.q. Sheep, Wolf).
I want to check if two objects are the same class and if so, it should create new object of the same class and if they are not, they are fighting.
if x and y same object:
#create new object
else:
#fight
Is there a better method than isinstance
?
Because, there will be more animals than just 2 and I think it wouldn't be efficient to do it like this:
if isinstance(x, Wolf)
# ...
Both “is” and “==” are used for object comparison in Python. The operator “==” compares values of two objects, while “is” checks if two objects are same (In other words two references to same object).
A single class definition can be used to create multiple objects. As mentioned before, objects are independent. Changes made to one object generally do not affect the other objects representing the same class.
you can simply use
if type(x) == type(y):
fight()
Python has a type system that allows you to do exactly that.
EDIT: as Martijn has pointed out, since Types only exist once in every runtime, you can use is
instead of ==
:
if type(x) is type(y):
fight()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With