{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 4-1-6 クラスの継承" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Parent\n", "hi\n" ] } ], "source": [ "class Parent\n", " def greet\n", " puts 'hi'\n", " end\n", "end\n", "\n", "\n", "class Child < Parent\n", "end\n", "\n", "p Child.superclass\n", "child = Child.new\n", "child.greet" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#\n", "#\n" ] }, { "data": { "text/plain": [ "#" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "class Parent\n", " def initialize\n", " @var = 'content'\n", " end\n", "end\n", "\n", "class Chlid < Parent\n", " def initialize\n", " end\n", "end\n", "\n", "p Parent.new\n", "p Child.new" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "ename": "NameError", "evalue": "uninitialized constant Child2", "output_type": "error", "traceback": [ "\u001b[31mNameError\u001b[0m: uninitialized constant Child2", "\u001b[37m(pry):37:in `
'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:355:in `eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:355:in `evaluate_ruby'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:323:in `handle_line'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:243:in `block (2 levels) in eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:242:in `catch'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:242:in `block in eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:241:in `catch'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:241:in `eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/backend.rb:65:in `eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/backend.rb:12:in `eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/kernel.rb:87:in `execute_request'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/kernel.rb:47:in `dispatch'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/kernel.rb:37:in `run'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/command.rb:70:in `run_kernel'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/command.rb:34:in `run'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/bin/iruby:5:in `'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/bin/iruby:23:in `load'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/bin/iruby:23:in `
'\u001b[0m" ] } ], "source": [ "class Chlid2 < Parent\n", " def initialize\n", " end\n", "end\n", "\n", "p Child2.new\n", "# It might be iruby's bug...." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#\n" ] }, { "data": { "text/plain": [ "#" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "class Foo < Parent\n", " def initialize\n", " end\n", "end\n", "\n", "p Foo.new" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#\n" ] }, { "data": { "text/plain": [ "#" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "class Foo2 < Parent\n", " def initialize\n", " end\n", "end\n", "\n", "p Foo2.new" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "ename": "NameError", "evalue": "constant Object::Child2 not defined", "output_type": "error", "traceback": [ "\u001b[31mNameError\u001b[0m: constant Object::Child2 not defined", "\u001b[37m(pry):56:in `remove_const'\u001b[0m", "\u001b[37m(pry):56:in `block in
'\u001b[0m", "\u001b[37m(pry):56:in `class_eval'\u001b[0m", "\u001b[37m(pry):56:in `
'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:355:in `eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:355:in `evaluate_ruby'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:323:in `handle_line'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:243:in `block (2 levels) in eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:242:in `catch'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:242:in `block in eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:241:in `catch'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:241:in `eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/backend.rb:65:in `eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/backend.rb:12:in `eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/kernel.rb:87:in `execute_request'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/kernel.rb:47:in `dispatch'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/kernel.rb:37:in `run'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/command.rb:70:in `run_kernel'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/command.rb:34:in `run'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/bin/iruby:5:in `'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/bin/iruby:23:in `load'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/bin/iruby:23:in `
'\u001b[0m" ] } ], "source": [ "Object.class_eval { remove_const \"Child2\" }" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": true }, "outputs": [], "source": [ "class Child2\n", "end" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#\n" ] }, { "data": { "text/plain": [ "#" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p Child2.new" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "Child2" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Object.class_eval { remove_const \"Child2\" }" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ ":initialize" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "class Child2 < Parent\n", " def initialize\n", " end\n", "end" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "#" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Child2.new" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[:PARENT]\n" ] }, { "data": { "text/plain": [ "\"parent's constant\"" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "class Parent\n", " PARENT = 'parent\\'s constant'\n", "end\n", "\n", "class Child < Parent\n", "end\n", "\n", "p Child.constants\n", "Child::PARENT" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "\"grand child constant\"" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "class GrandChild < Child\n", " PARENT = 'grand child constant'\n", "end\n", "\n", "GrandChild::PARENT" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "(pry):81: warning: already initialized constant FOO\n", "(pry):80: warning: previous definition of FOO was here\n" ] }, { "data": { "text/plain": [ "\"bar\"" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "FOO = \"foo\"\n", "FOO = \"bar\"" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "\"bar\"" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "BAR = \"bar\".freeze" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "(pry):83: warning: already initialized constant BAR\n", "(pry):82: warning: previous definition of BAR was here\n" ] }, { "data": { "text/plain": [ "\"buzz\"" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "BAR = \"buzz\"" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "\"buzz\"" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "BAR" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 4-1-7 メソッドのオーバーライド" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hi\n" ] } ], "source": [ "class Parent\n", " def greet\n", " puts 'Hi'\n", " end\n", "end\n", "\n", "class Child < Parent\n", " def greet(name)\n", " puts \"Hi #{name}\"\n", " end\n", "end\n", "\n", "parent = Parent.new\n", "parent.greet" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hi ruby\n", "nil\n" ] }, { "ename": "ArgumentError", "evalue": "wrong number of arguments (0 for 1)", "output_type": "error", "traceback": [ "\u001b[31mArgumentError\u001b[0m: wrong number of arguments (0 for 1)", "\u001b[37m(pry):92:in `greet'\u001b[0m", "\u001b[37m(pry):101:in `
'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:355:in `eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:355:in `evaluate_ruby'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:323:in `handle_line'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:243:in `block (2 levels) in eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:242:in `catch'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:242:in `block in eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:241:in `catch'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:241:in `eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/backend.rb:65:in `eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/backend.rb:12:in `eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/kernel.rb:87:in `execute_request'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/kernel.rb:47:in `dispatch'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/kernel.rb:37:in `run'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/command.rb:70:in `run_kernel'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/command.rb:34:in `run'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/bin/iruby:5:in `'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/bin/iruby:23:in `load'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/bin/iruby:23:in `
'\u001b[0m" ] } ], "source": [ "child = Child.new\n", "p child.greet('ruby')\n", "p child.greet" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hi ruby\n", "Nice to meet you!\n" ] } ], "source": [ "class GrandChild < Child\n", " def greet(name)\n", " super\n", " \n", " puts \"Nice to meet you!\"\n", " end\n", "end\n", "\n", "grandchild = GrandChild.new\n", "grandchild.greet 'ruby'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 4-1-8 " ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Called!\n" ] }, { "ename": "ArgumentError", "evalue": "wrong number of arguments (0 for 1)", "output_type": "error", "traceback": [ "\u001b[31mArgumentError\u001b[0m: wrong number of arguments (0 for 1)", "\u001b[37m(pry):198:in `singleton_method'\u001b[0m", "\u001b[37m(pry):198:in `
'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:355:in `eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:355:in `evaluate_ruby'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:323:in `handle_line'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:243:in `block (2 levels) in eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:242:in `catch'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:242:in `block in eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:241:in `catch'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:241:in `eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/backend.rb:65:in `eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/backend.rb:12:in `eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/kernel.rb:87:in `execute_request'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/kernel.rb:47:in `dispatch'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/kernel.rb:37:in `run'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/command.rb:70:in `run_kernel'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/command.rb:34:in `run'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/bin/iruby:5:in `'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/bin/iruby:23:in `load'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/bin/iruby:23:in `
'\u001b[0m" ] } ], "source": [ "Object.class_eval { remove_const :Foo }\n", "\n", "class Foo\n", "end\n", "\n", "foo = Foo.new\n", "bar = Foo.new\n", "\n", "def bar.singleton_method\n", " puts 'Called!'\n", "end\n", "\n", "bar.singleton_method\n", "foo.singleton_method" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "in Foo class\n", "in singleton method\n" ] } ], "source": [ "class Foo\n", " def override_me\n", " puts \"in Foo class\"\n", " end\n", " \n", " def self.hoge\n", " end\n", "end\n", "\n", "bar = Foo.new\n", "def bar.override_me\n", " super\n", " \n", " puts \"in singleton method\"\n", "end\n", "\n", "bar.override_me" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[Foo, Object, PP::ObjectMixin, Kernel, BasicObject]" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Foo.ancestors" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "Class" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Foo.class" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "Class" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Class.class" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[Class, Module, Object, PP::ObjectMixin, Kernel, BasicObject]" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Class.ancestors" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Ruby 2.2.2", "language": "ruby", "name": "ruby" }, "language_info": { "file_extension": "rb", "mimetype": "application/x-ruby", "name": "ruby", "version": "2.2.2" } }, "nbformat": 4, "nbformat_minor": 0 }