A proposal for attribute lookup failures

MonkeeSage MonkeeSage at gmail.com
Sun Nov 18 18:02:01 EST 2007


Ps. Just for kicks, here is a simple ruby 1.8 mock-up of the proposal
(sorry for using ruby, but I don't know enough C to start hacking the
CPython backend; I think that a higher-level example is conceptually
clearer anyhow). Reference cycles are not detected in the example.

#!/usr/bin/ruby

class Object
  def method_missing(fun, *args)
    begin
      TOPLEVEL_BINDING.method(fun).call(self, *args)
    rescue
      raise(NoMethodError,
            %{undefined method `#{fun.to_s}' for "#{self}":String},
            [])
    end
  end
end

def myfun(s1, s2)
  s1 + s2
end

puts "foo".myfun("bar")
# -> foobar

puts 1.myfun(2)
# -> 3

puts "foo".nofun("baz")
# -> ./attr_fail.rb:10: undefined method `nofun' for "foo":String
(NoMethodError)



More information about the Python-list mailing list