鱼C论坛

 找回密码
 立即注册
楼主: 小甲鱼

[扩展阅读] Python Mixin 编程机制(转)

  [复制链接]
发表于 2017-8-5 00:07:14 | 显示全部楼层
print那里是不是漏了( )?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-5 00:11:55 | 显示全部楼层
__bases__功能好像用不了,你们呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-8-5 00:12:32 | 显示全部楼层
zhang12247 发表于 2016-4-5 11:53
**** 作者被禁止或删除 内容自动屏蔽 ****

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

使用道具 举报

发表于 2017-8-5 00:14:36 | 显示全部楼层
roar123 发表于 2015-9-17 20:47
看不懂,看来还得继续努力啊:sad

同样不是很懂+1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-14 16:08:59 | 显示全部楼层
jiexinren 发表于 2015-8-3 16:04
这个在我电脑上无法运行啊(3.4.3,64位版本)
Traceback (most recent call last):
  File "E:/桌面/j ...

请问你的问题解决了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-8 22:35:47 | 显示全部楼层
不懂额。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-19 10:59:16 | 显示全部楼层
这是什么意思?父类里面有插件的方法,两个子类继承了这个方法,然后在两个实例化的子类中插入类c,于是c就获得了两个子类的方法么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-30 10:24:07 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-1 15:11:56 | 显示全部楼层
owner.__dict__[f.__name__] = f
实例化c就是owner,那么[f.__name__]是什么意思,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-14 13:31:30 | 显示全部楼层
Plugin 好东西, 好东西往往不知道是啥意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-14 13:32:08 | 显示全部楼层
有人懂第三个的原理吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-21 19:28:52 | 显示全部楼层
在python3下运行出错
Traceback (most recent call last):
  File "E:/pythonpro/lesson36-10.py", line 43, in <module>
    AFeature().plugin(c)
  File "E:/pythonpro/lesson36-10.py", line 12, in plugin
    owner.__dict__[f.__name__]==f
KeyError: 'get_a_value'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-10 14:32:41 | 显示全部楼层
emmm 一知半解 继续加油
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-5 22:18:42 | 显示全部楼层
牛逼,Python3也正常能运行插件方式,使用__dict__可以扩展对象的方法,这写方法保存在_exported_methods 列表里边
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-15 23:59:45 | 显示全部楼层
c = Combine()          #将c归入组合类
AFeature().plugin(c)    #将A类以及父类的方法属性给予c
BFeature().plugin(c)    #同上

c.get_a_value()         #调用A类的方法
c.get_b_value()

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

使用道具 举报

头像被屏蔽
发表于 2018-6-27 19:41:56 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-11 23:13:36 | 显示全部楼层
前两个都很容易理解,第三个看着好复杂啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-25 14:51:48 | 显示全部楼层
略懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-10 17:16:31 | 显示全部楼层
况qiqi 发表于 2018-3-21 19:28
在python3下运行出错
Traceback (most recent call last):
  File "E:/pythonpro/lesson36-10.py", line  ...

你多打了一个等号,变成判断是否相等了。而这里是要在dict里面新创建一个方法并赋值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-19 13:43:41 | 显示全部楼层
太经典了。重点,这个是修改类的实列化对象,并不修改类。所以经典。需要仔细看,重复看,才能品味出。但是我觉得最后有点写的不好,应该改一些就好了。
例如:
class Combine:
    def get_a_value(self):
         print('my is origin func')

运行变成:
c=Combine()
AFeatrue().plugin(c) #对实列化对象c进行修改,get_a_value函数
BFeature().plugin(c)#对实列化对象c添加get_b_value函数
b=Combine()
c.get_a_value()
b.get_a_value()
c.get_b_value()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 13:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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