今天的我更强了 发表于 2020-6-16 10:51:57

class类

classJu():
    def __init__(self,width=0,height=0):
      self.width=width
      self.height=height
    def __setattr__(self,name,value):
      if name=='square':
            self.height=self.width=value
      else:
            super().__setattr__(name,value)
    def getA(self):
      return self.height*self.width
运行的时候tt=Ju(4,5),tt.getA和tt.getA()一个返回一串字母另一个返回20,原因是什么?

KevinHu 发表于 2020-6-16 10:54:23

tt.getA是一个方法名,返回的是一个函数对象

热气球 发表于 2020-6-16 10:59:38

tt.getA是一个方法名,返回的是一个函数对象
tt.getA()是你调用了这个函数,返回的是函数的计算结果

Twilight6 发表于 2020-6-16 10:59:58

本帖最后由 Twilight6 于 2020-6-16 11:03 编辑




这和函数道理一样,当你定义一个函数后不加括号,调用的是函数本身,是整个函数体,简单说就是这整个函数对象,不执行函数

而你加上括号后调用的是函数的执行结果,返回你设置的返回值

方法本质也算函数,只不过是在类中函数,叫方法

所以你直接调用实例对象的 getA 方法返回的是方法对象,而你 getA() 加上括号后返回的就是方法运行返回的结果

页: [1]
查看完整版本: class类