Python:尽管明显是

2024-06-16 09:56:39 发布

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

下面的代码调用了一个名为lago的方法

#!/usr/bin/env python
#
# Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
#

import sys

class InstallTest():
    """Ru Ovirt System Tests"""


    def run_command_checking_exit_code(command):
        """ Runs a command"""
        print("Command is " + str(command))
        print(command.read())
        print(command.close())

    def lago():
        """run the conductor profiles required to install OLVM """
        Log.test_objective('TODO')
        run_command_checking_exit_code('ls -al')
        """
        yum_list = ["epel-release", "centos-release-qemu-ev", "python-devel", "libvirt", "libvirt-devel", "libguestfs-tools", "libguestfs-devel", "gcc", "libffi-devel", "openssl-devel", "qemu-kvm-ev"]
        for yum in yum_list

        ret, msg, tup = self.client.run('/qa/conductor/tests/' + OSSE_OLV_VERSION + '/installer/installerfactory.py -s ' + OSSE_OLV_ENGINE_HOST + ' -t OS_OL7U6_X86_64_PVHVM_30GB -c 10.1.0.10 -o ' + self.log_jobdir_cc +'/vm_install_ol7.6', timeout=1000000)
        if ret:
            self.tc_fail('Creation of OLV Engine VM failed')
        ret, msg, tup = self.client.run('/qa/conductor/tests/' + OSSE_OLV_VERSION + '/installer/installerfactory.py -s ' + OSSE_OLV_ENGINE_HOST +' -p ovirt-engine -c 10.1.0.10 -o ' + self.log_jobdir_cc + '/engine_deploy', timeout=1000000)
        if ret:
            self.tc_fail('Install of OLV Engine Host failed')
        self.tc_pass('OLV Engine Host installed')
        """

    def main():
        lago()

    main()

但是,它在输出中不存在

Traceback (most recent call last):
  File "C:/Users/rafranci/Downloads/ovirt_st_setup.py", line 20, in <module>
    class InstallTest():
  File "C:/Users/rafranci/Downloads/ovirt_st_setup.py", line 65, in InstallTest
    main()
  File "C:/Users/rafranci/Downloads/ovirt_st_setup.py", line 63, in main
    lago()
NameError: name 'lago' is not defined

据我所知,这是没有理由的-想法


Tags: runinpyselfmaindefdevelcommand
2条回答

检查代码中的更改:

class InstallTest():
    """Ru Ovirt System Tests"""


    def run_command_checking_exit_code(command):
        """ Runs a command"""
        print("Command is " + str(command))
        print(command.read())
        print(command.close())

    def lago(self):
        """run the conductor profiles required to install OLVM """
        #Log.test_objective('TODO')
        #run_command_checking_exit_code('ls -al')
        """
        yum_list = ["epel-release", "centos-release-qemu-ev", "python-devel", "libvirt", "libvirt-devel", "libguestfs-tools", "libguestfs-devel", "gcc", "libffi-devel", "openssl-devel", "qemu-kvm-ev"]
        for yum in yum_list

        ret, msg, tup = self.client.run('/qa/conductor/tests/' + OSSE_OLV_VERSION + '/installer/installerfactory.py -s ' + OSSE_OLV_ENGINE_HOST + ' -t OS_OL7U6_X86_64_PVHVM_30GB -c 10.1.0.10 -o ' + self.log_jobdir_cc +'/vm_install_ol7.6', timeout=1000000)
        if ret:
            self.tc_fail('Creation of OLV Engine VM failed')
        ret, msg, tup = self.client.run('/qa/conductor/tests/' + OSSE_OLV_VERSION + '/installer/installerfactory.py -s ' + OSSE_OLV_ENGINE_HOST +' -p ovirt-engine -c 10.1.0.10 -o ' + self.log_jobdir_cc + '/engine_deploy', timeout=1000000)
        if ret:
            self.tc_fail('Install of OLV Engine Host failed')
        self.tc_pass('OLV Engine Host installed')
        """

    def main(self):
        self.lago()

    def __init__(self):
        self.main()
InstallTest()

必须实例化类才能调用其方法

def main():
   InstallTest().lago()

或者

def main():
   install_test = InstallTest()
   install_test.lago()

只有在类中添加self参数时,这才有效

def lago(self):
    """run the conductor profiles required to install OLVM """
    Log.test_objective('TODO')
    run_command_checking_exit_code('ls -al')

还有,我不明白你为什么要上课。如果您没有任何理由,您可以删除该类,然后您以前的代码将正常工作,如评论中所建议的

相关问题 更多 >