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

2024-04-18 22:17:38 发布

您现在位置: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的文件中吗?我的测试显示不是这样,但我希望在将来避免出现数以百万计的异常和错误。你知道吗


Tags: 文件实例self参数initdefclassprint
1条回答
网友
1楼 · 发布于 2024-04-18 22:17:38

您可以验证对象的类型。你知道吗

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.")

相关问题 更多 >