我正在编写一个用于查询Mediawiki API的框架。我有一个Page
代表 wiki 上的文章的类,我还有一个Category
类,它具有 Page
更具体的方法(比如能够计算类别中的成员数量。我还有一个Page#category?
方法Page
通过查询 API 来确定文章的命名空间,确定实例化对象是否真的代表 Mediawiki 类别页面。
class Page
def initialize(title)
# do initialization stuff
end
def category?
# query the API to get the namespace of the page and then...
namespace == CATEGORY_NAMESPACE
end
end
class Category < Page
# ...
end
我想要做的是能够检测我的框架的用户是否尝试使用 Page 对象(即。Page.new("Category:My Category")
)实例化 Mediawiki 类别,如果是,则直接从构造函数实例化一个Category
对象,而不是一个对象。Page
Page
在我看来,这应该是可能的,因为它让人想起 Rails 中的单表继承,但我不确定如何让它工作。