python全局变量/ java python translate

时间:2018-06-01 04:16:23

标签: java python

我是python的新手,并开始将一段Java代码转换为python。

我正在接受建议:https://www.geeksforgeeks.org/g-fact-34-class-or-static-variables-in-python/模仿python中的Java静态块

class ConfigurationManager:
    try:
        readIn = open('C:/Users/george/Desktop/hello.txt','r')
        # readIn = open('./resources/my.properties','r')
    except Exception as e:
        print('except:',e)
    finally:
        if readIn:
            readIn.close()
    def read(self):
        print(readIn.read())


con = ConfigurationManager()
con.read()

得到了:

  

D:\ Python27 \ python.exe D:/laotang/session/conf/ConfigurationManager.py   Traceback(最近一次调用最后一次):文件   “D:/laotang/session/conf/ConfigurationManager.py”,第18行,in          con.read()文件“D:/laotang/session/conf/ConfigurationManager.py”,第14行,读取       print(readIn.read())NameError:未定义全局名称'readIn'

原始Java代码:

static {
        try {
            InputStream in = ConfigurationManager.class
                    .getClassLoader().getResourceAsStream("my.properties"); 

            prop.load(in);  
        } catch (Exception e) {
            e.printStackTrace();  
        }
    }

有人请好好解决,谢谢

1 个答案:

答案 0 :(得分:0)

Python主要是一种与Java不同的脚本语言。 Java是面向对象的语言。因此,当从java代码转换为python代码时,存在一些差异。但是python也支持类概念。在您的情况下,工作代码是,

class ConfigurationManager:

    def read(self):
        try:
            readIn = open('C:/Users/george/Desktop/hello.txt', 'r')
            # readIn = open('./resources/my.properties','r')
            print(readIn.read())
        except Exception as e:
             print('except:', e)
        finally:
            if readIn:
                readIn.close()


con = ConfigurationManager()
con.read()

但这不是满足您要求的最佳python代码。我的观点首先是你应该学习python基础知识,而不是将java代码转换为python。