尝试从类中的函数调用函数

2024-09-27 02:22:23 发布

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

我一直得到以下错误

g:\python\u测试>;py3 lib\libtest.py p=g:\python\u test\SqlLogon.txt 回溯(最近一次呼叫最后一次): 文件“lib\libtest.py”,第43行,在

i.printit('c:\mylog.log')

文件“lib\libtest.py”,第32行,在printit中

s = wos()

NameError:未定义名称“wos”

如果我删除对os的调用,让s='WINDOWS'一切正常。 为什么我不能调用该函数??下面是给出问题的代码

import sys
import platform

import os

import subprocess
class utl:

    def __init__(self,path):
        self.path = path
        print ('p = ' + self.path)

    def usr(self):

        lc = open(self.path,'r')

        up = lc.readlines()
        u = up[0]
        u = u.strip('\n')
        p = up[1]
        p = p.strip('\n')

        return u,p

    def wos(self):
        p = platform.system()        
        print ('type = ' + str(type(p)))

        return p.upper()

    def printit(self,filetoprt):
        s = wos()   # undefined wos
        #s = "WINDOWS"
        print ('os1 = ' + s  + ' ' + filetoprt)
        if s == ('WINDOWS'):
            os.startfile(filetoprt,'print')

#x = LogonSql.usr('g:\python_test\lib\jcd.txt')
i= utl('g:\python_test\SqlLogon.txt')

p = i.usr()
#t = i.wos()
i.printit('c:\mylog.log')

Tags: pathpytestimportselftxtoswindows
2条回答

wos是您的类成员,您应该使用

self.wos()

wos()是一个绑定到utl类实例的方法,因此您需要这样引用它们

s = self.wos()替换s = wos()。否则,您的代码将尝试访问全局作用域(类之外)上的函数wos(),您尚未定义该函数

相关问题 更多 >

    热门问题