1. Ruby要建立新的对象,必须使用每个类的new方法。
例如:
与java中new Object()相通,与python不同,python 直接 a = Object()。
2. 想知道对象属于哪个类,可以使用class方法:
例如:
和python中的__class__类似
3. 要判断一个对象是否是某个类的实例,可以使用instance_of?方法
例如:
这同python中isinstance功能类似。
4. 检查有继承关系的父类,使用is_a?
例如:
5. 定义类:
6. initialize方法
initialize方法是一个比较特殊的方法,调用new方法建立对象时,这个initialize方法会被调用;同时,传递给new的所有实参都会传给initialize方法。
(和python的__init__方法功能类似)
7. 类实例和说明:
Ruby不允许从对象外部直接读取,写入实例变量。所有要访问对象内部的数据,都需要定义方法来操作。
定义访问属性:
[table]
|定义|意义|
|attr_reader:name|只定义用来读取的方法(定义name方法)|
|attr_writer:name|只定义用来写入的方法(定义name=方法)|
|attr_accessor:name|定义用来读取与写入的方法(定义上述两个方法)|
[/table]
例如:
ary = Array.new
p ary # => []
与java中new Object()相通,与python不同,python 直接 a = Object()。
2. 想知道对象属于哪个类,可以使用class方法:
例如:
ary = []
str = "Hello world."
p ary.class # => Array
p str.class # => String
和python中的__class__类似
3. 要判断一个对象是否是某个类的实例,可以使用instance_of?方法
例如:
ary = []
str = "Hello world."
p ary.instance_of?(Array) # => true
p str.instance_of?(String) # => true
p ary.instance_of?(String) # => false
p str.instance_of?(Array) # => false
这同python中isinstance功能类似。
4. 检查有继承关系的父类,使用is_a?
例如:
str = "This is a String"
p str.is_a?(String) # => true
p str.is_a?(Object) # => true
5. 定义类:
class 类名 # 类名一定要以大写字母开始
类定义
end
6. initialize方法
initialize方法是一个比较特殊的方法,调用new方法建立对象时,这个initialize方法会被调用;同时,传递给new的所有实参都会传给initialize方法。
(和python的__init__方法功能类似)
7. 类实例和说明:
Ruby不允许从对象外部直接读取,写入实例变量。所有要访问对象内部的数据,都需要定义方法来操作。
class HelloWorld
def initialize(myname="Ruby")
@name = myname
end
def name
return @name # get
end
def name= (value)
@name = value # set
end
end
ruby = HelloWorld.new
p ruby.name # => "Ruby"
ruby.name = "bob"
p ruby.name # => "bob"
class HelloWorld2
def initialize(myname="Ruby2")
@name = myname
end
attr_reader:name # 相当与set属性
end
ruby2 = HelloWorld2.new
p ruby2.name # => "Ruby2"
ruby2.name = "bob2" # 8-1-class.rb:35: undefined method `name='
# for #<HelloWorld2:0xb77f9100 @name="Ruby2"> (NoMethodError)
p ruby2.name
定义访问属性:
[table]
|定义|意义|
|attr_reader:name|只定义用来读取的方法(定义name方法)|
|attr_writer:name|只定义用来写入的方法(定义name=方法)|
|attr_accessor:name|定义用来读取与写入的方法(定义上述两个方法)|
[/table]