我对 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
如果找不到任何属性/方法,它将返回错误。
添加回答
举报
0/150
提交
取消