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,原因是什么? tt.getA是一个方法名,返回的是一个函数对象 tt.getA是一个方法名,返回的是一个函数对象
tt.getA()是你调用了这个函数,返回的是函数的计算结果 本帖最后由 Twilight6 于 2020-6-16 11:03 编辑
这和函数道理一样,当你定义一个函数后不加括号,调用的是函数本身,是整个函数体,简单说就是这整个函数对象,不执行函数
而你加上括号后调用的是函数的执行结果,返回你设置的返回值
方法本质也算函数,只不过是在类中函数,叫方法
所以你直接调用实例对象的 getA 方法返回的是方法对象,而你 getA() 加上括号后返回的就是方法运行返回的结果
页:
[1]