# Accedere alle variabili di classe base

**URL:** <https://www.ruby-forum.com/t/accedere-alle-variabili-di-classe-base/163869>\
**Category:** IT\
**Created:** [March 25, 2009, 6:04pm UTC](https://www.ruby-forum.com/t/accedere-alle-variabili-di-classe-base/163869 "2009-03-25T18:04:14Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![alexpescara](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/b487fb/32.png) [@alexpescara](https://www.ruby-forum.com/u/alexpescara)\
**Post date:** [March 25, 2009, 6:04pm UTC](https://www.ruby-forum.com/t/accedere-alle-variabili-di-classe-base/163869/1 "2009-03-25T18:04:14Z")

</div>

Salve,  
se ho una classe B che Ã¨ ereditata da una classe E,supponiamo che @v Ã¨  
una variabile di classe della classe B,se voglio accedere ad essa dalla  
classe E come devo fare?devo usare self.v?

Grazie

---

<div class="post-metadata">

**Author:** ![alexpescara](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/b487fb/32.png) [@alexpescara](https://www.ruby-forum.com/u/alexpescara)\
**Post date:** [March 26, 2009, 10:13am UTC](https://www.ruby-forum.com/t/accedere-alle-variabili-di-classe-base/163869/2 "2009-03-26T10:13:37Z")

</div>

Alessandro M. wrote:

> Salve,  
> se ho una classe B che Ã¨ ereditata da una classe E,supponiamo che @v Ã¨  
> una variabile di classe della classe B,se voglio accedere ad essa dalla  
> classe E come devo fare?devo usare self.v?
> 
> Grazie

A dire il vero non lo so, ma provare non Ã¨ difficile:

$ vi x

class B  
attr\_accessor :v  
def initialize  
@v = 0  
end  
end

class E \< B  
def v  
self.v  
end  
end

e = E.new  
puts e.v

$ ruby x  
x:7:in `v': stack level too deep (SystemStackError) from x:7:in`v’  
from x:12

Quindi la risposta Ã¨ no. self.v richiama ricorsivamente sÃ¨ stesso.

PerÃ² cercando “ruby call base class” su Google il primo link ritornato  
dÃ la soluzione, che Ã¨:

class E \< B  
def v  
super  
end  
end

Paolo

---

<div class="post-metadata">

**Author:** ![alexpescara](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/b487fb/32.png) [@alexpescara](https://www.ruby-forum.com/u/alexpescara)\
**Post date:** [March 26, 2009, 10:19am UTC](https://www.ruby-forum.com/t/accedere-alle-variabili-di-classe-base/163869/3 "2009-03-26T10:19:10Z")

</div>

Il 25 marzo 2009 18.04, Alessandro M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha  
scritto:

> Salve,  
> se ho una classe B che è ereditata da una classe E,supponiamo che @v è  
> una variabile di classe della classe B,se voglio accedere ad essa dalla  
> classe E come devo fare?devo usare self.v?

scusami, parliamo di variabili di classe o di istanza? @v è una  
instance variable, a differenza di @@v che è una class variable.

---

<div class="post-metadata">

**Author:** ![alexpescara](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/b487fb/32.png) [@alexpescara](https://www.ruby-forum.com/u/alexpescara)\
**Post date:** [March 26, 2009, 8:13pm UTC](https://www.ruby-forum.com/t/accedere-alle-variabili-di-classe-base/163869/4 "2009-03-26T20:13:13Z")

</div>

Pietro G. wrote:

> Il 25 marzo 2009 18.04, Alessandro M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha  
> scritto:
> 
> > Salve,  
> > se ho una classe B che ï¿½ ereditata da una classe E,supponiamo che @v ï¿½  
> > una variabile di classe della classe B,se voglio accedere ad essa dalla  
> > classe E come devo fare?devo usare self.v?
> 
> scusami, parliamo di variabili di classe o di istanza? @v ï¿½ una  
> instance variable, a differenza di @@v che ï¿½ una class variable.

Hai ragione, non mi ero accorto dell’ambiguitÃ nella domanda. La  
soluzione perÃ² Ã¨ la stessa:

class B  
@@v = 0  
def v  
@@v  
end  
end

class E \< B  
def v  
super  
end  
end

e = E.new  
puts e.v

Paolo
