我的程序有以下结构-
文件1.py
class A:
index1
def method1():
// --do stuff--
文件2.py
import File1
Class B:
index2
def method2(a) // Needs Object of A as a parameter
// --do stuff--
a.method1() // How can I guarantee that this is an object of class A
文件3.py
import File1
import File2
Class Starter:
def start():
a = A()
b = B()
b.method2(a)
我有几个问题-
- 如何确保method2中的参数a是A类的对象?
- 这可能是 IDE 特定的,但我可以在编写代码时找到对象“a”的 method2 中可以访问的所有方法和变量吗?
- 用 Java 编写这样的面向对象程序比用 Python 编写更好吗?
最佳答案
(1) 如果 method2 的参数确实必须是类 A 的实例,那么您可以使用内置的 isinstance
来验证其类型。然而,Pythonic 方法只是假设任何对象只要公开 B 类想要调用的方法就可以满足要求。这就是 @johnny 所说的“鸭子打字”的意思。
(2) 这通常是 IDE 的事情,但在交互式解释器中,您可以在对象上调用 dir()
或 vars()
来检查其属性。
(3) 这是一个品味问题。 Java 让您确信对象的行为将完全符合预期,但代价是声明类型、接口(interface)、检查异常等。Python 不太相信行为将完全符合预期,但您不需要花费太多时间来构造类型提前划分层次结构。
关于java - 在Python中使用类对象作为其他类函数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36021936/