Atpug627
Atpug627

Reputation: 23

unsupported operand type(s) for +=: 'method' and 'int'

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

Answers (2)

Ajanyan Pradeep
Ajanyan Pradeep

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

krk
krk

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

Related Questions