如何創建一個沒有定義實例方法的類?甚至沒有__send__
或__id__
。在Ruby中創建一個沒有實例方法的類
0
A
回答
5
您可以使用Module#undef_method
取消定義方法:
class Foo < BasicObject
instance_methods.each { |method| undef_method(method) }
end
Foo.instance_methods #=> []
foo = Foo.new
foo.__id__ #=> NoMethodError: undefined method `__id__' for #<Foo:0x007fb9da565dd8>
foo.__send__(:test) #=> NoMethodError: undefined method `__send__' for #<Foo:0x007fb9da565dd8>
在這個例子中Foo
繼承BasicObject
,因爲這個類本身具有定義很少有實例方法,因此,取消定義他們更快。這不是強制性的,也就是說,無論從哪個類繼承,您都可以取消定義實例方法,因此它可以寫得很好:
class Foo
instance_methods.each { |method| undef_method(method) }
end
相關問題
- 1. 另一個類沒有創建實例的調用方法
- 2. ExecutorService - 在方法中創建新實例vs每個類創建一個實例
- 3. 有沒有辦法在c#中創建一個sqllocaldb實例?
- 4. Ruby - 有沒有辦法獲得一個特徵類的實例?
- 5. 創建一個同時是實例和類方法的方法
- 6. 有沒有創建它的實例有一個類可以嗎?
- 7. 在dojo的addOnLoad方法中創建一個實例沒有全局範圍
- 8. 有沒有使用新的創建一個實例的另一種方法?
- 9. Ruby/Rails:創建一個對其子項實例進行操作的類方法?
- 10. 創建子類的一些實例在父類的方法
- 11. Ruby on Rails的:創建一個實例說, 「belongs_to的」 另一類
- 12. 有沒有辦法從Ruby中的實例調用私有的類方法?
- 13. 有沒有辦法找出創建哪個類實例'this'
- 14. 無法在Java中創建一個類的多個實例
- 15. OWL API - 創建沒有實例的類
- 16. 是一個對象(某個類的實例)的方法與Ruby中它的類的實例方法相同嗎?
- 17. 創建一個沒有「新」操作符的類的新實例
- 18. 類方法中的Ruby實例引用?
- 19. 從onCreate創建類方法的實例
- 20. 如何用不同的方法創建一個類的實例?
- 21. Java:在靜態方法中從超類創建一個子類的實例
- 22. 如何在另一個類中創建一個類的實例
- 23. 從實例創建一個子類以覆蓋幾個方法?
- 24. 如何在類中爲所有setter方法創建新實例?
- 25. 在創建類的實例的類中定義方法
- 26. 有沒有辦法用測試數據創建一個類型的實例?
- 27. 有沒有方法來創建一個特定的表單實例DJANGO?
- 28. 如何將在類方法中創建的實例傳遞給同一類中的另一個方法?
- 29. 兩個類創建對方的實例
- 30. 實例中沒有一個類的ARFF
爲什麼要這麼做?你想達到什麼目的? – akuhn
做這種事情的實用性是什麼?目前還不清楚你想達到什麼目的。 – Makoto
@Makoto爲什麼會關心實用性?當我谷歌的時候,我從來沒有偶然發現谷歌說:「嘿,你爲什麼想知道我的搜索是否有**,你確定你想知道嗎?」 –