print那里是不是漏了( )?
__bases__功能好像用不了,你们呢?
zhang12247 发表于 2016-4-5 11:53
**** 作者被禁止或删除 内容自动屏蔽 ****
我的也是这样...
roar123 发表于 2015-9-17 20:47
看不懂,看来还得继续努力啊:sad
{:10_266:} 同样不是很懂+1
jiexinren 发表于 2015-8-3 16:04
这个在我电脑上无法运行啊(3.4.3,64位版本)
Traceback (most recent call last):
File "E:/桌面/j ...
请问你的问题解决了吗
不懂额。{:10_269:}
这是什么意思?父类里面有插件的方法,两个子类继承了这个方法,然后在两个实例化的子类中插入类c,于是c就获得了两个子类的方法么?
{:10_256:}
owner.__dict__ = f
实例化c就是owner,那么是什么意思,
Plugin 好东西, 好东西往往不知道是啥意思
有人懂第三个的原理吗?
在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
KeyError: 'get_a_value'
emmm 一知半解 继续加油
牛逼,Python3也正常能运行插件方式,使用__dict__可以扩展对象的方法,这写方法保存在_exported_methods 列表里边
c = Combine() #将c归入组合类
AFeature().plugin(c) #将A类以及父类的方法属性给予c
BFeature().plugin(c) #同上
c.get_a_value() #调用A类的方法
c.get_b_value()
不知对不对
前两个都很容易理解,第三个看着好复杂啊
略懂
况qiqi 发表于 2018-3-21 19:28
在python3下运行出错
Traceback (most recent call last):
File "E:/pythonpro/lesson36-10.py", line...
你多打了一个等号,变成判断是否相等了。而这里是要在dict里面新创建一个方法并赋值
太经典了。重点,这个是修改类的实列化对象,并不修改类。所以经典。需要仔细看,重复看,才能品味出。但是我觉得最后有点写的不好,应该改一些就好了。
例如:
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()