Да, на самом деле у меня есть. Это только немного изменено и урезано от того, что у меня было:
class Widget
# class instance variable pattern
class << self; attr_accessor :color; end
def show_color()
"This widget is #{self.class.color}"
end
end
class WidgetR < Widget
@color = "Russet"
end
class WidgetC < Widget
@color = "Cordovan"
end
class WidgetL < Widget
@color = "Liver"
end
WidgetR.new.show_color #=> "This widget is Russet"
Но я не уверен, что это действительно необходимо в том случае, если я его использовал. Я мог бы просто переопределить метод. Или при условии цветного метода. Или хранится в переменной класса как Hash. Или даже сохранил копию в каждом случае (хорошо, что это своего рода yech). Я уверен, что есть и другие возможности ...
Существует множество альтернатив, и синтаксис неудобен. Учитывая, что я предполагаю, что случаи, когда это наиболее естественная вещь, вероятно, довольно редки.
Это может помочь вам попытаться воспроизвести это поведение с помощью переменных класса и экземпляра и увидеть, что это трудно достичь (хотя это легко, если вы определяете методы и т. Д.).
C.J.