Ruby中如何从另一个文件访问类方法
在Ruby中跨文件访问类的方法
首先要明确:你在file1.rb里定义的abc是实例方法,必须先创建Test1类的实例对象,才能调用这个方法。下面是具体实现方式:
方式1:调用实例方法(原代码不变)
修改file2.rb,先实例化Test1再调用方法:
# 用require_relative更适合同目录文件,避免路径问题 require_relative 'file1.rb' class Test2 def invoke_test1_abc # 创建Test1的实例 test1_obj = Test1.new # 调用实例方法abc test1_obj.abc end end # 测试示例 test2_instance = Test2.new test2_instance.invoke_test1_abc
方式2:改为类方法(无需实例化)
如果想不用实例化直接调用,可以把abc改成类方法,修改file1.rb:
class Test1 # 类方法用def self.xxx定义 def self.abc # ... 方法逻辑 end def xyz # ... 实例方法逻辑 end end
这时file2.rb里可以直接通过类名调用:
require_relative 'file1.rb' class Test2 def invoke_test1_class_abc # 直接调用类方法 Test1.abc end end
注意事项
- 优先用
require_relative加载同目录或相对路径的文件,require会去Ruby的系统加载路径查找,容易出现找不到文件的问题 - 搞清楚实例方法和类方法的区别:实例方法属于对象,必须创建对象后调用;类方法属于类本身,直接用类名调用
内容的提问来源于stack exchange,提问作者Rubin
相关产品推荐
相关产品推荐

