是否可以在实例初始化时为现有对象包含一个新方法? [复制]
Posted
技术标签:
【中文标题】是否可以在实例初始化时为现有对象包含一个新方法? [复制]【英文标题】:is it possible to include a new method to existing object at instance initialization? [duplicate] 【发布时间】:2014-06-28 18:30:21 【问题描述】:这是我在 python 3.4 中的尝试:
import imp
def my_example_function():
print("my_example_function:")
class my_class:
def __init__(self):
module = imp.load_source(my_example_function, __file__)
my_class_instance = my_class()
结果是:
Traceback (most recent call last):
File "D:\Python34\test.py", line 10, in <module>
my_class_instance = my_class()
File "D:\Python34\test.py", line 8, in __init__
module = imp.load_source(my_example_function, __file__)
File "D:\python34\lib\imp.py", line 166, in load_source
spec = util.spec_from_file_location(name, pathname, loader=loader)
File "<frozen importlib._bootstrap>", line 932, in spec_from_file_location
File "<frozen importlib._bootstrap>", line 1439, in is_package
AttributeError: 'function' object has no attribute 'rpartition'
看起来像是某种内部错误,是 python 本身的错误。
【问题讨论】:
导入是针对模块,而不是函数.. 我现在对***.com/questions/972/… 不太了解,有人可以告诉我我的代码有什么问题吗?我想在 python 中尝试的东西是合法的吗? 如我所说;导入用于模块。向实例添加方法不是导入。 但无论如何这个错误本身就是一个错误,它非常神秘。 不,您使用的函数需要一个字符串;它是这样记录的。传递任何其他内容都会中断。 【参考方案1】:错误说,“函数”对象没有属性“rpartition”。您提供给load_source
的唯一函数对象是my_example_function
,但需要一个名称即字符串。
字符串有一个名为rpartition
的方法。
所以如果你正确使用load_source
,你就不会出错。但我不能说,怎么做,因为我不明白你想做什么。
【讨论】:
以上是关于是否可以在实例初始化时为现有对象包含一个新方法? [复制]的主要内容,如果未能解决你的问题,请参考以下文章