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

时间:2019-03-14 01:36:22

标签: python

我一直收到以下错误

g:\ python_test> py3 lib \ libtest.py p = g:\ python_test \ SqlLogon.txt 追溯(最近一次通话):   

中的文件“ lib \ libtest.py”,第43行
i.printit('c:\mylog.log')

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

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

2 个答案:

答案 0 :(得分:0)

wos是您的班级成员,您应该使用

self.wos()

答案 1 :(得分:0)

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

s = wos()替换为s = self.wos()。否则,您的代码将尝试访问尚未定义的全局范围(类外部)上的函数wos()