我的程序有以下结构 -
File1.py
class A:
index1
def method1():
// --do stuff--
File2.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
File3.py
import File1
import File2
Class Starter:
def start():
a = A()
b = B()
b.method2(a)
我几乎没有问题 -
答案 0 :(得分:1)
(1)如果method2 的参数确实必须是A类的实例,那么您可以使用isinstance
内置来验证其类型。然而,pythonic方式只是假设任何对象都会令人满意,只要它暴露出B类想要调用的方法即可。这就是@johnny所说的'鸭子打字'。
(2)这通常是IDE的事情,但在交互式解释器中,您可以在对象上调用dir()
或vars()
来检查其属性。
(3)这是一个品味问题。 Java让您确信对象的行为与预期完全一样,代价是声明类型,接口,检查异常等.Python不太相信行为将完全符合预期,但您不必花费太多时间构建类型等级提前。
答案 1 :(得分:1)
你可以检查这样的类型:
import File1
Class B:
index2
def method2(a) // Needs Object of A as a parameter
// --do stuff--
// How can I guarantee that this is an object of
if type(a) == A:
a.method1()
答案 2 :(得分:0)
要在使用该参数执行任何任务之前保证参数属于给定类,您可以使用内置的'type()'函数在执行所需任务之前先验证它。