鱼C论坛

 找回密码
 立即注册
查看: 974|回复: 3

[已解决]class类

[复制链接]
发表于 2020-6-16 10:51:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
class  Ju():
    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,原因是什么?
最佳答案
2020-6-16 10:59:58
本帖最后由 Twilight6 于 2020-6-16 11:03 编辑




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

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

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

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

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-16 10:54:23 | 显示全部楼层
tt.getA是一个方法名,返回的是一个函数对象
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-16 10:59:38 | 显示全部楼层
tt.getA是一个方法名,返回的是一个函数对象
tt.getA()是你调用了这个函数,返回的是函数的计算结果
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-16 10:59:58 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2020-6-16 11:03 编辑




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

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

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

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

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-21 22:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表