鱼C论坛

 找回密码
 立即注册
查看: 7175|回复: 24

[技术交流] [记录下学习心得] | 第040讲:类和对象:一些相关的BIF

[复制链接]
回帖奖励 24 鱼币 回复本帖可获得 1 鱼币奖励! 每人限 1 次
发表于 2021-5-8 09:01:32 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 TC_DHL 于 2022-6-1 00:23 编辑

修饰符: classmethod | staticmethod | property

如果有不对的地方,欢迎指正, 互相学习哈!


修饰符:类方法 @classmethod | 无需显式地传递类名做实参
class Computer:
    # 类属性modules
    __modules = {"cpu":"Intel", "内存":"镁光", "硬盘":"970-Pro"}

    # 设定修饰符@类方法 | 类的函数或者叫类的方法output_modules
    @classmethod
    def output_modules(cls):
        for (i,s) in cls.__modules.items():
            print(i, ':', s)

# 调用类的方法output_modules,无需显式地传递类名做实参
Computer.output_modules()

#-------------------------------------------------------------
# 输出结果:
# cpu : Intel
# 内存 : 镁光
# 硬盘 : 970-Pro
也可被其他类直接进行调用(感觉有点全局的意思), 看例子代码如下:
class Computer:
    # 类属性modules
    __modules = {"cpu":"Intel", "内存":"镁光", "硬盘":"970-Pro"}

    # 设定修饰符@类方法 | 类的函数或者叫类的方法output_modules
    @classmethod
    def output_modules(cls):
        for (i,s) in cls.__modules.items():
            print(i, ':', s)


class OtherClass:
    def __init__(self):
        pass
    def _test_OtherClass(self):
        # 调用类的方法output_modules,无需显式地传递类名做实参
        Computer.output_modules()

aaaa = OtherClass()
aaaa._test_OtherClass()

#-------------------------------------------------------------
# 输出结果:
# cpu : Intel
# 内存 : 镁光
# 硬盘 : 970-Pro

修饰符:静态方法 @staticmethod | 必须显式地传递类名做实参
class Computer:
    # 类属性modules
    __modules = {"cpu":"Intel", "内存":"镁光", "硬盘":"970-Pro"}

    # 在静态方法search_module中定义形参var,准备传递类:Computer
    # 调用时必须显性地传递类名,才能实现类方法一样的效果
    # 设定修饰符@静态方法 | 类的函数或者叫类的方法search_module
    @staticmethod
    def search_module(var, module_value):
        print(var.__modules[module_value])

Computer.search_module(Computer, "cpu")
Computer.search_module(Computer, "内存")
Computer.search_module(Computer, "硬盘")

#-------------------------------------------------------------
# 输出结果:
# Intel
# 镁光
# 970-Pro
也可被其他类直接进行调用(有点全局的意思.....), 看例子代码如下:
class Computer:
    # 类属性modules
    __modules = {"cpu":"Intel", "内存":"镁光", "硬盘":"970-Pro"}

    # 在静态方法search_module中定义形参var,准备传递类:Computer
    # 调用时必须显性地传递类名,才能实现类方法一样的效果
    # 设定修饰符@静态方法 | 类的函数或者叫类的方法search_module
    @staticmethod
    def search_module(var, module_value):
        print(var.__modules[module_value])


class OtherClass:
    def __init__(self):
        pass

    def _test_OtherClass(self):
        # 调用类的静态方法search_module,必须显式地传递类名做实参
        Computer.search_module(Computer, "cpu")
        Computer.search_module(Computer, "内存")
        Computer.search_module(Computer, "硬盘")

aaaa = OtherClass()
aaaa._test_OtherClass()

#-------------------------------------------------------------
# 输出结果:
# Intel
# 镁光
# 970-Pro


@property 此修饰符可赋值给变量, 语法为:x = property(getx, setx, delx)
        如果是以此种方法的话, 函数名或者说是方法名可以不相同
如果是以装饰器形式使用的话, 函数名或者说是方法名必须相同, 例子代码如下:

游客,如果您要查看本帖隐藏内容请回复


2022-06-01 推翻例子中"删除字典中内容, 这里没办法通过@modules_property.deleter以达到删除字典中某个键值"这句话:
游客,如果您要查看本帖隐藏内容请回复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-8 10:21:58 | 显示全部楼层

回帖奖励 +1 鱼币

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

使用道具 举报

发表于 2021-6-16 11:25:28 | 显示全部楼层

回帖奖励 +1 鱼币

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

使用道具 举报

发表于 2021-7-3 16:37:33 | 显示全部楼层

回帖奖励 +1 鱼币

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

使用道具 举报

发表于 2021-7-4 15:42:38 | 显示全部楼层

回帖奖励 +1 鱼币

学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-25 12:38:59 | 显示全部楼层

回帖奖励 +1 鱼币

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

使用道具 举报

发表于 2021-7-25 13:11:22 | 显示全部楼层

回帖奖励 +1 鱼币

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

使用道具 举报

发表于 2021-7-26 02:58:06 | 显示全部楼层

回帖奖励 +1 鱼币

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

使用道具 举报

发表于 2021-7-29 09:56:43 | 显示全部楼层
感谢您的无私奉献
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-29 15:44:24 | 显示全部楼层

回帖奖励 +1 鱼币

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

使用道具 举报

发表于 2021-7-31 07:34:18 | 显示全部楼层

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

使用道具 举报

发表于 2022-3-9 16:28:41 | 显示全部楼层

回帖奖励 +1 鱼币

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

使用道具 举报

发表于 2022-3-9 18:23:03 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-10 08:46:27 | 显示全部楼层

回帖奖励 +1 鱼币

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

使用道具 举报

发表于 2022-3-10 10:17:29 | 显示全部楼层

回帖奖励 +1 鱼币

学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-10 10:55:15 | 显示全部楼层

回帖奖励 +1 鱼币

学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-11 10:50:24 | 显示全部楼层

回帖奖励 +1 鱼币

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

使用道具 举报

发表于 2022-3-12 21:20:42 | 显示全部楼层

回帖奖励 +1 鱼币

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

使用道具 举报

发表于 2022-3-12 21:27:24 | 显示全部楼层

回帖奖励 +1 鱼币

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

使用道具 举报

发表于 2022-3-13 11:36:09 | 显示全部楼层

回帖奖励 +1 鱼币

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-28 14:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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