如何在类的实例上定义一个方法,使该方法只适用于该实例而不适用于其他实例?
请有人提供此功能的用例。
请有人提供此功能的用例。
类方法是在类本身上调用的,这就是为什么在方法声明中它总是会声明为def self.class_method_name.
而实例方法是在类的特定实例上调用的(而不是类本身),它们像普通方法一样声明,即def instance_method_name.
例如:
class Car
def self.class_method
puts "It's a class method"
end
def instance_method
puts "It's an instance method"
end
end
Car.class_method => "It's a class method"
Cat.instance_method => undefined method 'instance_method' for Car:Class
Car.new.instance_method => "It's an instance method"
Car.new.class_method => undefined method 'class_method' for Car:Class
关于用例,这里有一个来自Rails的例子:
class Car < ApplicationRecord
belongs_to :owner
has_many :passengers
def self.get_cars(owner) # This is a class method
Car.includes(:passengers).where(owner: owner).order(created_at: :desc)
end
end
Car.get_cars(owner)
方法,您可以根据自己的逻辑获取所有车辆。
def Date.today ; ... ; end
这样的语句与def obj.foo ; ... ; end
是相同的。 - Stefan