Reputation: 23
I don't know why but getting the TypeError: unsupported operand type(s) for +=: 'method' and 'int'
class Person:
count_instance = 0
def __init__(self,first,last,age):
Person.count_instance +=1
self.first = first
self.last = last
self.age = age
@classmethod
def count_instance(cls):
return f"You have created {cls.count_instance} instances of {cls.__name__} class"
def full_name(self):
return f"{self.first} {self.last}"
def is_above_18(self):
return self.age>18
p1 = Person("yup","gup",21)
p2 = Person('akshhu','yes',27)
print(Person.count_instance)
Upvotes: 0
Views: 2215
Reputation: 1132
You have used count_instance
as method name and variable name.
So changing the count_instance
variable to other name like count_instance_var
will solve the issue
class Person:
count_instance_var = 0
def __init__(self,first,last,age):
Person.count_instance_var +=1
self.first = first
self.last = last
self.age = age
@classmethod
def count_instance(cls):
return f"You have created {cls.count_instance_var} instances of {cls.__name__} class"
def full_name(self):
return f"{self.first} {self.last}"
def is_above_18(self):
return self.age>18
p1 = Person("yup","gup",21)
p2 = Person('akshhu','yes',27)
print(Person.count_instance_var)
If you are trying to call the class method, please use Person.count_instance()
class Person:
count_instance_var = 0
def __init__(self,first,last,age):
Person.count_instance_var +=1
self.first = first
self.last = last
self.age = age
@classmethod
def count_instance(cls):
return f"You have created {cls.count_instance_var} instances of {cls.__name__} class"
def full_name(self):
return f"{self.first} {self.last}"
def is_above_18(self):
return self.age>18
p1 = Person("yup","gup",21)
p2 = Person('akshhu','yes',27)
print(Person.count_instance())
Upvotes: 1
Reputation: 1
looks like you're calling the method count_instance not the variable. based on this answer you'll need to change either the method name or the var name as they cant be the same. Python classes: method has same name as property
Upvotes: 0