Lua,尝试索引字段' __ parent' (零值)

时间:2016-05-22 18:11:00

标签: class inheritance lua torch

问题来自torch5教程:http://torch5.sourceforge.net/manual/torch/index-8-1.html

 require "torch"

 -- for naming convenience
 do
   --- creates a class "Foo"
   local Foo = torch.class('Foo')

   --- the initializer
   function Foo:__init()
     self.contents = "this is some text"
   end

   --- a method
   function Foo:print()
     print(self.contents)
   end

   --- another one
   function Foo:bip()
     print('bip')
   end

 end

 --- now create an instance of Foo
 foo = Foo()

 --- try it out
 foo:print()

 --- create a class torch.Bar which
 --- inherits from Foo
 do
   local Bar = torch.class('torch.Bar', 'Foo')

   --- the initializer
   function Bar:__init(stuff)
     --- call the parent initializer on ourself
     self.__parent.__init(self)

     --- do some stuff
     self.stuff = stuff
   end

   --- a new method
   function Bar:boing()
     print('boing!')
   end

   --- override parent's method
   function Bar:print()
     print(self.contents)
     print(self.stuff)
   end
 end

 --- create a new instance and use it
 bar = torch.Bar("ha ha!")
 bar:print() -- overrided method
 bar:boing() -- child method
 bar:bip()   -- parent's method

运行此脚本后,收到错误消息:

 /Users/frankhe/torch/install/bin/luajit: test1.lua:39: attempt to index field '__parent' (a nil value)

以下是详细信息: enter image description here

我想知道为什么会发生这种错误。

1 个答案:

答案 0 :(得分:1)

使用:

local Bar, parent = torch.class('torch.Bar', 'Foo')

function Bar:__init(stuff)
    parent.__init(self)

    self.stuff = stuff
end