鱼C论坛

 找回密码
 立即注册
查看: 1628|回复: 6

[已解决]小问题。类方法

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

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

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

x
本帖最后由 白白白白丶白 于 2020-7-13 13:44 编辑

  类方法用在与单个实例无关但与类或类的所有实例相关的所有场景

请问这个比较再通俗点解释怎么说,类似什么情况下需要定义类方法而不是实例方法。
最佳答案
2020-7-13 13:58:07
什么时候需要定义成类方法,而不是实例方法。

解答:在所有实例属性都通用的时候,就需要定义成类方法,而不是实例方法。

比如说,所有的车都有离合器,这个离合器就属于车类的通用方法,而不需要定义成实例方法再去占用一份内存。

在实际应用中,你可以参考写的登录程序。

当类方法实例化后,每个人的登录用户名和密码都不一样,但是所有人的登录状态都一样。

这个登录状态,就可以写成类方法。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-13 13:58:07 | 显示全部楼层    本楼为最佳答案   
什么时候需要定义成类方法,而不是实例方法。

解答:在所有实例属性都通用的时候,就需要定义成类方法,而不是实例方法。

比如说,所有的车都有离合器,这个离合器就属于车类的通用方法,而不需要定义成实例方法再去占用一份内存。

在实际应用中,你可以参考写的登录程序。

当类方法实例化后,每个人的登录用户名和密码都不一样,但是所有人的登录状态都一样。

这个登录状态,就可以写成类方法。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-13 14:00:14 | 显示全部楼层
比如 dict.fromkeys,这是个类方法,用来创建一个新的 dict 。它并不关心这个实例是什么内容,它只需要创建一个新 dict 就可以了。
但 dict.pop 则不同,它需要从实例里删除内容,所以它只能是实例方法。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-13 14:12:34 | 显示全部楼层
heidern0612 发表于 2020-7-13 13:58
什么时候需要定义成类方法,而不是实例方法。

解答:在所有实例属性都通用的时候,就需要定义成类方法, ...

所有的实例属性通用?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-13 14:20:10 | 显示全部楼层
白白白白丶白 发表于 2020-7-13 14:12
所有的实例属性通用?

实例属性通用的太多了。

你应该知道,每实例化一次,实例就占用一部分内存空间。

你假如需要实例化一千次,并且这个属性都是通用的,难道就需要创建一千次内存空间吗?


实例属性通用再举个例子,比如说你编写一个学生的类,所有学生的实例都是在某个学校下面。

难道还需要创建一千个实例化的学校吗?所以这种层面只能是类属性通用,而不是实例属性单独用。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-13 14:27:44 | 显示全部楼层
heidern0612 发表于 2020-7-13 13:58
什么时候需要定义成类方法,而不是实例方法。

解答:在所有实例属性都通用的时候,就需要定义成类方法, ...


在所有实例属性都通用的时候,就需要定义成类方法,而不是实例方法。


我的意思是这句话是不是应该是所有实例方法都通用的时候要定义成类方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-13 14:41:48 | 显示全部楼层
白白白白丶白 发表于 2020-7-13 14:27
我的意思是这句话是不是应该是所有实例方法都通用的时候要定义成类方法

那倒不是,一般情况下定义成类方法的还是少数。(这里的类方法单纯指的只是那种实例通用的方法或属性。)


类方法实例化后,一般情况下都是各自有各自的空间的。

比如你类方法里面写个血量,实例化后每个人的血量都不同。

这种情况下还是不通用的,你不能说我一个人掉血,所有人都跟着掉血吧。。


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

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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