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

如何在Python中实现虚拟方法?

佘单鹗
2023-03-14
问题内容

我知道PHP或Java的虚拟方法。

如何在Python中实现它们?

还是我要在抽象类中定义一个空方法并覆盖它?


问题答案:

当然,您甚至不必在基类中定义方法。在Python中,方法要比虚拟方法更好-它们是完全动态的,因为Python中的输入是 鸭子输入

class Dog:
  def say(self):
    print "hau"

class Cat:
  def say(self):
    print "meow"

pet = Dog()
pet.say() # prints "hau"
another_pet = Cat()
another_pet.say() # prints "meow"

my_pets = [pet, another_pet]
for a_pet in my_pets:
  a_pet.say()

Cat而且Dog在Python中,甚至不必从通用基类派生该行为即可-
您可以免费获得它。就是说,一些程序员更喜欢以更严格的方式定义他们的类层次结构,以更好地记录它并施加 一定
的键入严格性。这也是可能的,例如参见abc标准模块。



 类似资料:
  • 问题内容: 我想用Python创建一个虚拟磁盘。我希望能够以跨平台的方式执行此操作,因此它可以在Windows XP至7,Mac和Linux上运行。我希望能够像普通驱动器一样对ramdisk进行读/写操作,最好使用驱动器号/路径。 我想要这样做的原因是为创建具有特定结构的目录的脚本编写测试。我想在ramdisk中完全创建目录,以便确保测试结束后将其完全删除。我考虑使用Python的,但是如果测试将

  • nginx安装好之后一般会在/etc/nginx/目录下有nginx.conf文件和conf.d目录,这其实已经帮我们预留了虚拟主机要准备的内容。 看下nginx.conf文件,里面有这样一行: include /etc/nginx/conf.d/*.conf; 那么也就是说ngixn启动都会自动加载conf.d目录下以.conf结尾的所有配置文件 ok,我们直接干掉nginx.conf里面se

  • 我是C#新手,我不明白编译器为什么不抱怨这段代码。以下是类的层次结构: 执行代码: 执行时<代码>---- 当决定调用什么函数时--运行时还是编译时?如果我弄脏了一个新的< code>class CAble : IAble怎么办?

  • 本文向大家介绍Unity实现虚拟摇杆,包括了Unity实现虚拟摇杆的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Unity实现虚拟摇杆的具体代码,供大家参考,具体内容如下 面板上设置一些属性,比如摇杆拖拽的距离,是否始终可视,是否限制虚拟摇杆位置(我是把虚拟摇杆限制在了屏幕的左下区域)。 使用GetDirAndLength()方法去获得移动的方向和长度即可 以上就是本文的全部内容,

  • 问题内容: 在我的项目文件夹中,创建了venv文件夹。 当我在VS Code中运行命令时,我的venv文件夹未显示。我像这里建议的那样上了一层,但是VS Code没有看到我的虚拟解释器。 我错过了什么? 问题答案: PS: 我已经使用vs代码已有一段时间了,发现了另一种在vs代码中显示虚拟环境的方法。 通过命令提示符转到上级文件夹。 键入并回车。[为我在Windows和Linux上工作。] 这也应

  • 我需要一个包含所有全局包的虚拟环境。我创建了一个,全局Django版本是1.3.1。现在,我只需要在虚拟环境中将Django版本升级到1.4。我通过激活环境切换到我的环境,并尝试 sudo-pip-install-Django=1.4 它不是安装在虚拟环境中,而是安装在全局磁盘包中。 如何仅在虚拟环境中安装软件包?