如何使用对象创建语句自动调用构造函数来调用主函数中的函数和构造函数中的主函数?

2024-09-29 01:24:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python的新手,几乎一无所知。我正在尝试将函数链接到构造函数,但无法。如何调用主函数中的前两个函数和构造函数中的主函数

在创建对象之后,我可以通过调用外部的inpVal()check()来执行代码,而不使用_init_()exec(),但这样做时它不会显示任何输出

class Acute:

    def _init_(self):
        self.exec()

    def inpVal(self):
        print("Enter 3 positive integers(angles):")
        self.ang1 = int(input())
        self.ang2 = int(input())
        self.ang3 = int(input())

    def check(self):
        if self.ang1 <=0 or self.ang2 <=0 or self.ang3 <=0:
            print("Invalid Input")
        elif self.ang1+self.ang2+self.ang3 != 180:
            print("Not a Triangle")
        elif self.ang1 >=90 or self.ang2 >=90 or self.ang3 >=90:
            print("Not an Acute Triangle")
        else:
            print("Acute Triangle")

    def exec(self):
        self.inpVal()
        self.check()

t1 = Acute()

我希望在类声明之后只有一个对象创建语句,默认情况下会调用构造函数,并从中调用exec函数,该函数将调用input和check函数


Tags: or函数selfinputdefcheckintexec
3条回答

How to call the first 2 functions in a main function and the main function in constructor?

不能在构造函数中调用main函数。根据定义^{}这是脚本的入口点

__main__模块中,您应该创建类

您的代码存在以下问题:

  • _init_不是创建对象时调用的python初始值设定项函数的正确名称。。它应该是__init__。因为您还没有给出,所以会创建一个默认的初始化函数并调用它
  • exec是现有的python函数名。所以,需要避免

请参见修改后的代码:

class Acute:
    def __init__(self):
        self.exec_custom()

    def inpVal(self):
        print("Enter 3 positive integers(angles):")
        self.ang1 = int(input())
        self.ang2 = int(input())
        self.ang3 = int(input())

    def check(self):
        if self.ang1 <=0 or self.ang2 <=0 or self.ang3 <=0:
            print("Invalid Input")
        elif self.ang1+self.ang2+self.ang3 != 180:
            print("Not a Triangle")
        elif self.ang1 >=90 or self.ang2 >=90 or self.ang3 >=90:
            print("Not an Acute Triangle")
        else:
            print("Acute Triangle")

    def exec_custom(self):
        self.inpVal()
        self.check()

t1 = Acute()

输出:

Enter 3 positive integers(angles):
1
2
3
Not a Triangle

以下代码按预期工作:

class Acute:

    def __init__(self):
        self.exec_method()
        self.ang1 = None
        self.ang2 = None
        self.ang3 = None

    def inp_val(self):
        print("Enter 3 positive integers(angles):")
        self.ang1 = int(input())
        self.ang2 = int(input())
        self.ang3 = int(input())

    def check(self):
        if self.ang1 <= 0 or self.ang2 <= 0 or self.ang3 <= 0:
            print("Invalid Input")
        elif self.ang1+self.ang2+self.ang3 != 180:
            print("Not a Triangle")
        elif self.ang1 >= 90 or self.ang2 >= 90 or self.ang3 >= 90:
            print("Not an Acute Triangle")
        else:
            print("Acute Triangle")

    def exec_method(self):
        self.inp_val()
        self.check()


t1 = Acute()

输出:

>>>python test.py 
Enter 3 positive integers(angles):
12
32
43
Not a Triangle

相关问题 更多 >