如何阻止子类改写父类公共方法为长尾词?

2026-04-11 17:571阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计157个文字,预计阅读时间需要1分钟。

如何阻止子类改写父类公共方法为长尾词?

可以防止公共方法被子类覆盖吗?class Parent: def some_method():

如何阻止子类改写父类公共方法为长尾词?

是否可以防止公共方法被子类覆盖?

class Parent def some_method #important stuff that should never be overwritten end end class Child < Parent def some_method #should not be possible to overwrite (raise an error if a child class tries to do it) end end

谢谢!

您可以使用’method_added’和’inherited’钩子来实现此目的:

class Foo def self.inherited(sub) sub.class_eval do def self.method_added(name) if name == :some_method remove_method name raise Exception, "Can't override #{name} method" end end end end end class Bar < Foo end class Bar def some_method end end # => Exception: Can't override some_method method

本文共计157个文字,预计阅读时间需要1分钟。

如何阻止子类改写父类公共方法为长尾词?

可以防止公共方法被子类覆盖吗?class Parent: def some_method():

如何阻止子类改写父类公共方法为长尾词?

是否可以防止公共方法被子类覆盖?

class Parent def some_method #important stuff that should never be overwritten end end class Child < Parent def some_method #should not be possible to overwrite (raise an error if a child class tries to do it) end end

谢谢!

您可以使用’method_added’和’inherited’钩子来实现此目的:

class Foo def self.inherited(sub) sub.class_eval do def self.method_added(name) if name == :some_method remove_method name raise Exception, "Can't override #{name} method" end end end end end class Bar < Foo end class Bar def some_method end end # => Exception: Can't override some_method method