Python - 类的实例作为另一个类方法

时间:2017-06-03 21:06:43

标签: python

我的任务是使用Python重写用Java编写的应用程序。这是我与Python的第一次接触,我有点困惑。正如我读到的,Python并不是强类型的。在我的程序中,我有很多带有参数的类,这些参数是其他类的实例。这是一个简短的演示:

class ClassA:

    nameOfClass = "ClassA"

    def __init__(self):
        print("I'm ClassA")

    def printOtherClassMethod(self, instanceOfOtherClass):
        instanceOfOtherClass.printThisMethod()


class ClassB:
    nameOfClass = "ClassA"

    def __init__(self):
        print("I'm ClassB")

    def printThisMethod(self):
        print("How classA can know that printThisMethod exists?")


classA = ClassA()
classB = ClassB()
classA.printOtherClassMethod(classB)

有没有办法指定printOtherClassMethod的参数必须是ClassB的实例?第一个问题是我的IDE(PyCharm)无法检测到instanceOfOtherClassprintThisMethod并且很容易出错。另外,我有一个练习,让每个类都在单个文件中。我害怕导入特定文件。例如,如果ClassAClassB位于单个文件中,我应该在ClassB的文件中导入ClassA吗?我的测试显示不是,但我希望将来避免数百万的异常和错误。

1 个答案:

答案 0 :(得分:1)

您可以验证对象的类型。

if type(instanceOfOtherClass) not is ClassB:
    raise Exception("Object has the wrong type.")

您还可以检查对象是否具有该特定方法。

if not (hasattr(instanceOfOtherClass, 'printThisMethod') and callable(instanceOfOtherClass.printThisMethod)):
    raise Exception("Object does not have the correct method.")