Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
210 views
in Technique[技术] by (71.8m points)

python - 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)
question from:https://stackoverflow.com/questions/65897878/unsupported-operand-types-for-method-and-int

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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())

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...