簡體   English   中英

Python:盡管明顯存在但未看到功能

[英]Python: Function not seen despite clearly being there

下面的代碼調用了一個名為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

據我所知,沒有任何理由 - 想法?

您必須實例化類才能調用其方法。

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')

另外,我不明白您為什么需要為此上課。 如果您沒有任何理由,您可以刪除該類,然后您之前的代碼將按照評論中的建議正常工作。

檢查代碼中的更改:

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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM