2009-05-09 3 views
0

Я использую HTTParty для своего класса, и я хочу использовать метод default_params. Тем не менее, я также хочу иметь возможность устанавливать атрибуты при создании экземпляра моего класса с инициализацией.Как вызвать атрибут attr_accessor внутри класса (но вне любых методов)?

class MyClass 
    include HTTParty 

    attr_accessor :param1, :param2 

    # This or @param1 doesn't work. 
    default_params :param1 => self.param1, :param2 => self.param2 

    def initialize(param1, param2) 
    self.param1 = param1 
    self.param2 = param2 
    end 
end 

Таким образом, я могу сделать

m = MyClass.new('hey', 'hello') 

вместо

m = MyClass.new 
m.param1 = 'hey' 
m.param2 = 'hello' 

Но я хотел бы использовать атрибуты с default_params. Как я могу это сделать?

ответ

1

Посмотрите на метод initialize в this example file с репо Github. Я раньше не использовал HTTParty, но это похоже на то, что вам нужно.

Кроме того, из вашего примера, похоже, вы смешиваете методы класса и переменные экземпляра.

1

Ruby имеет синтаксис для этого, в объявлениях методов.

class MyClass 
    attr_reader :param1, :param2 
    def initialize(param1 = "default", param2 = 5) 
    @param1, @param2 = param1, param2 
    end 
end 

MyClass.new.param2 
# => 5 

Я никогда не использовал HTTParty, и я не уверен, что делает метод default_params, так что я не знаю, если это то, что вы ищете.

+0

Спасибо, HTTParty и default_params действительно не имеют отношения к вопросу. Мне просто нужно знать, как я могу получить доступ к атрибутам внутри класса, но вне любых методов. – 2009-05-09 07:10:06

Смежные вопросы