我是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();
}
}
有人请好好解决,谢谢
答案 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。