Reputation: 75
The question is from the torch5 tutorial: 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
After running this script, I got the error message:
/Users/frankhe/torch/install/bin/luajit: test1.lua:39: attempt to index field '__parent' (a nil value)
Here is the picture of details:
I want to know why this error happened.
Upvotes: 2
Views: 558
Reputation: 16121
Use:
local Bar, parent = torch.class('torch.Bar', 'Foo')
And:
function Bar:__init(stuff)
parent.__init(self)
self.stuff = stuff
end
Upvotes: 1