当前位置: 首页 > 面试题库 >

Python继承-如何禁用功能

薛涛
2023-03-14
问题内容

在C ++中,可以通过在子类中将其声明为私有来禁用父类中的函数。如何在Python中完成?IE如何在孩子的公共界面中隐藏父母的功能?


问题答案:

在Python中确实没有任何真正的“私有”属性或方法。您可以做的一件事就是简单地覆盖子类中不需要的方法,并引发一个异常:

>>> class Foo( object ):
...     def foo( self ):
...         print 'FOO!'
...         
>>> class Bar( Foo ):
...     def foo( self ):
...         raise AttributeError( "'Bar' object has no attribute 'foo'" )
...     
>>> b = Bar()
>>> b.foo()
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
  File "<interactive input>", line 3, in foo
AttributeError: 'Bar' object has no attribute 'foo'


 类似资料:
  • 在面向对象的程序设计中,定义一个新的 class 的时候,可以从某个现有的 class 继承,新的 class 称为子类,而被继承的 class 称为基类、父类或超类。 Python 中继承的语法如下: class Parent: pass class Child(Parent): pass 在第 1 行,定义了父类 Parent; 在第 4 行,定义了子类 Child,语法

  • 问题内容: 我在使用Python进行面向对象的编程方面非常陌生,并且在理解函数(新样式类)时遇到困难,特别是在涉及多重继承时。 例如,如果你有类似的东西: 我不明白的是:该类会继承两个构造函数方法吗?如果是,那么哪个将与一起运行,为什么? 而如果要运行另一个呢?我知道这与Python方法解析顺序有关。 问题答案: Guido自己在他的博客文章(包括两次较早的尝试)中对此进行了合理的详细说明。 在你

  • 问题内容: 我正在编写一个库,该库具有一组预定义的枚举值。可以说,我的枚举如下所示。 现在,使用此库的客户端可能需要添加更多值。假设客户需要添加和。这不会覆盖任何现有值,而是使枚举具有5个值。 在此之后,我应该能够使用5种不变的可能性。 实现此目标的最佳方法是什么? 问题答案: 您不能具有另一个扩展,也不能通过继承将值“添加”到现有值。 但是,可以实现。 我要做的是让原始实现标记(即没有方法声明)

  • 主要内容:关于Python的多继承Python 类的封装、继承、多态 3 大特性,前面章节已经详细介绍了 Python 类的封装,本节继续讲解 Python 类的继承机制。 继承机制经常用于创建和现有类功能类似的新类,又或是新类只需要在现有类基础上添加一些成员(属性和方法),但又不想直接将现有类代码复制给新类。也就是说,通过使用继承这种机制,可以轻松实现类的重复使用。 举个例子,假设现有一个 Shape 类,该类的 draw()

  • 本文向大家介绍如何用js写一个继承?相关面试题,主要包含被问及如何用js写一个继承?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 原型链继承 核心: 将父类的实例作为子类的原型 特点: 非常纯粹的继承关系,实例是子类的实例,也是父类的实例 父类新增原型方法/原型属性,子类都能访问到 简单,易于实现 缺点: 要想为子类新增属性和方法,不能放到构造器中 无法实现多继承 来自原型对象的所有属性

  • 我的第一个想法是做这样的事情: 问题是/Animals集合现在是“不一致的”,因为它可以返回和接收结构不完全相同的对象(狗和猫)。集合返回具有不同属性的对象是否被认为是“RESTful”? 另一个解决方案是为每个具体类型创建URL,如下所示: