鱼C论坛

 找回密码
 立即注册
查看: 61|回复: 1

关于能否在对象中创建专属的方法

[复制链接]
发表于 4 天前 | 显示全部楼层 |阅读模式

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

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

x
小甲鱼老师在讲解<类和对象>中讲到对象的属性可以是自己的,但是对象的方法却是共享的.

那么我的困惑就是如何在对象中创建这个对象专属的方法呢?烦请大佬指点,谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 4 天前 | 显示全部楼层
如何为对象创建专属方法?

小甲鱼老师说得没错,Python 中的方法默认是类共享的,也就是说多个对象会共用同一个方法。但如果你想让某个对象拥有“专属”的方法,其实也是可以做到的!

方法一:使用 types.MethodType 动态绑定方法

你可以使用 types.MethodType 给某个对象单独绑定一个方法,这样其他对象就不会有这个方法。
import types

class Fish:
    def __init__(self, name):
        self.name = name

def swim(self):
    print(f"{self.name} 正在专属游泳~")

fish1 = Fish("小红鱼")
fish2 = Fish("小蓝鱼")

# 给 fish1 单独绑定 swim 方法
fish1.swim = types.MethodType(swim, fish1)

fish1.swim()  # 正常输出
fish2.swim()  # 报错:AttributeError

方法二:直接给对象添加 lambda 或函数

你也可以直接给对象添加一个函数或 lambda 表达式作为方法:
fish1.say_hi = lambda: print("Hi,我是小红鱼!")
fish1.say_hi()

这种方式简单粗暴,但不如 MethodType 那样优雅。

总结

  • 默认情况下,方法是类共享的;
  • 可以使用 types.MethodType 或 lambda 给对象添加专属方法;
  • 这种方式适合特殊需求,不建议滥用。


如果你还有其他关于类和对象的问题,欢迎继续提问哦~

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-2 02:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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