关于python:是否可以在实例初始化时为现有对象包含一个新方法?

is it possible to include a new method to existing object at instance initialization?

本问题已经有最佳答案,请猛点这里访问。

这是我在Python3.4中的尝试:

1
2
3
4
5
6
7
8
9
10
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()

结果是:

1
2
3
4
5
6
7
8
9
10
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本身的一个bug。


错误表明"function"-对象没有"rpartition"属性。您提供给load_source的唯一函数对象是my_example_function,但需要一个名称aka字符串。字符串有一个名为rpartition的方法。因此,如果正确使用load_source,就不会出现错误。但我不能说,怎么说,因为我不明白你想做什么。