为了账号安全,请及时绑定邮箱和手机立即绑定

我的函数如何知道它正在接收什么类?

我的函数如何知道它正在接收什么类?

德玛西亚99 2021-10-26 15:55:13
我对 Python 非常陌生,我只是在深入研究整个类/对象的理解领域。这是我真正在努力解决的问题:如果我在文件duck.py 中有一个带有属性和成员函数的“duck”类,并且我正在使用witch.py 中的一个函数来接收duck 类。我发出import 语句import duck然后在我的函数中:def doesitfloat(myduck, mywitch):    if myduck.boyancy() == 'floats':    ...“doesitfloat”如何知道 myduck 是具有所述属性/成员函数的鸭子对象?我想我了解了类的一般概念,但是当我创建一个类时,我如何在其他地方使用它?编辑... 我的第一篇文章和 python 新手 - 我能说什么。让我阐述..在我的类文件duck.py 中,我有:class duck:    def buoyancy(self):        return True在另一个文件 witch.py 中,我有我的 doitfloat() 函数和适当的导入import duckdef doesitfloat(myduck, mywitch)    if myduck.buoyancy() == 'floats':    ...'doesitfloat' 如何知道 myduck 是对象还是类型鸭子?现在,在另一段代码中 - 甚至可能在第三个文件中,声明了适当的导入,我有以下内容:someduck = ducksomewitch = witch  testingsomething = doesitfloat(someduck, somewitch)很明显,这个类是在我的第三个文件中声明的,并且在本地我已经声明了 someduck 和 somewitch 对象。然而,函数 'doesitfloat' 从未真正被告知它是一个鸭子对象。在其他语言中,'doesitfloat' 的声明会明确说明参数的类型,但是 python... ?? 对不起,这让我感到困惑。
查看完整描述

2 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

事实上,你刚刚意识到 python 中的一个指针,它甚至被称为鸭子编程,所以如果它像鸭子一样走路和说话,它就是鸭子

程序不知道给定的对象是否具有上述方法,它会尝试访问它(如果找不到,则返回错误)。

由使用代码的开发人员来遵守代码的目的。

在 python 中,当您尝试运行时,myduck.boyancy()python 尝试访问boyancy变量引用的对象的属性/方法,myduck如果找不到任何属性/方法,它将返回错误。


查看完整回答
反对 回复 2021-10-26
  • 2 回答
  • 0 关注
  • 112 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信