鱼C论坛

 找回密码
 立即注册
查看: 1653|回复: 12

[已解决]类方法

[复制链接]
发表于 2020-7-13 14:44:43 | 显示全部楼层 |阅读模式

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

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

x
class ClsMethod():
    objcnt1 = 0

    @classmethod
    def clsmeth1(cls):
        cls.objcnt1 += 1
        cnt1 = cls.getobjcnt() #类方法中通过cls访问类方法
        cnt2 = ClsMethod.getobjcnt() # 类方法中通过列明访问类方法

    @classmethod
    def  getobjcnt(cls):
        print('in getobjcnt(cls)')
        return ClsMethod.objcnt1

    def __init__(self):
        ClsMethod.clsmeth1() # 实例方法中通过类名.方法名访问类方法
        self.__class__.clsmeth1() # 实例方法中通过self.__class__.方法名访问类方法
>>> cm1 = ClsMethod()
in getobjcnt(cls)
in getobjcnt(cls)
in getobjcnt(cls)
in getobjcnt(cls)

实例化的时objcnt1为什么不被读取
最佳答案
2020-7-13 15:17:14
白白白白丶白 发表于 2020-7-13 14:57
一样的,也不打印objcnt1

代码不是执行到getobjcnt方法里的代码了吗,为什么不返回ClsMethod.objcnt1

1,我这里就打印了?
2,你自己看看你写的clsmeth1:
@classmethod
    def clsmeth1(cls):
        cls.objcnt1 += 1
        cnt1 = cls.getobjcnt() #类方法中通过cls访问类方法
        cnt2 = ClsMethod.getobjcnt() # 类方法中通过列明访问类方法
有return或者print吗?一个都没有,能有结果才怪。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-13 14:48:04 | 显示全部楼层
本帖最后由 qiuyouzhi 于 2020-7-13 14:50 编辑

你的clsmeth1并没有打印结果,当然不会输出objcnt1
代码改成这样:
class ClsMethod():
    objcnt1 = 0

    @classmethod
    def clsmeth1(cls):
        cls.objcnt1 += 1
        cnt1 = cls.getobjcnt() #类方法中通过cls访问类方法
        cnt2 = ClsMethod.getobjcnt() # 类方法中通过列明访问类方法
        return cnt2 # return cnt1也行

    @classmethod
    def  getobjcnt(cls):
        print('in getobjcnt(cls)')
        return ClsMethod.objcnt1

    def __init__(self):
        ClsMethod.clsmeth1() # 实例方法中通过类名.方法名访问类方法
        self.__class__.clsmeth1() # 实例方法中通过self.__class__.方法名访问类方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-13 14:48:55 | 显示全部楼层
print打印?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-13 14:57:57 | 显示全部楼层
qiuyouzhi 发表于 2020-7-13 14:48
你的clsmeth1并没有打印结果,当然不会输出objcnt1
代码改成这样:

一样的,也不打印objcnt1

代码不是执行到getobjcnt方法里的代码了吗,为什么不返回ClsMethod.objcnt1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-13 15:17:14 | 显示全部楼层    本楼为最佳答案   
白白白白丶白 发表于 2020-7-13 14:57
一样的,也不打印objcnt1

代码不是执行到getobjcnt方法里的代码了吗,为什么不返回ClsMethod.objcnt1

1,我这里就打印了?
2,你自己看看你写的clsmeth1:
@classmethod
    def clsmeth1(cls):
        cls.objcnt1 += 1
        cnt1 = cls.getobjcnt() #类方法中通过cls访问类方法
        cnt2 = ClsMethod.getobjcnt() # 类方法中通过列明访问类方法
有return或者print吗?一个都没有,能有结果才怪。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-13 15:45:10 | 显示全部楼层
qiuyouzhi 发表于 2020-7-13 15:17
1,我这里就打印了?
2,你自己看看你写的clsmeth1:

getobjcnt 不是返回了ClsMethod.objcnt1
在clsmeth1里不是给 cnt1和cnt2赋值了getobjcnt()了嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-13 15:46:28 | 显示全部楼层
白白白白丶白 发表于 2020-7-13 15:45
getobjcnt 不是返回了ClsMethod.objcnt1
在clsmeth1里不是给 cnt1和cnt2赋值了getobjcnt()了嘛{:9_229 ...

那你打印他俩了吗??连return都没有
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-13 15:52:28 | 显示全部楼层
qiuyouzhi 发表于 2020-7-13 15:46
那你打印他俩了吗??连return都没有

getobjcnt函数的返回值不会被赋值到cnt1和cnt2里面奥?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-13 16:32:39 | 显示全部楼层
白白白白丶白 发表于 2020-7-13 15:52
getobjcnt函数的返回值不会被赋值到cnt1和cnt2里面奥?

会被赋值进去....可是赋值操作不包括输出啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-13 16:38:57 | 显示全部楼层
qiuyouzhi 发表于 2020-7-13 16:32
会被赋值进去....可是赋值操作不包括输出啊

好的把,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-13 16:42:08 | 显示全部楼层
qiuyouzhi 发表于 2020-7-13 16:32
会被赋值进去....可是赋值操作不包括输出啊

>>> def a():
        print('in a')
        return 2

>>> x = a()
in a
>>> a()
in a
2
>>> x
2
>>> x
2

简单就是上面的情况呗,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-13 16:43:27 | 显示全部楼层
白白白白丶白 发表于 2020-7-13 16:42
简单就是上面的情况呗,


蛤?没弄明白你想表达啥
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-13 16:46:11 | 显示全部楼层
qiuyouzhi 发表于 2020-7-13 16:43
蛤?没弄明白你想表达啥

那算了,当我没说,我 再看看这又弄函数里面了,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-20 01:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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