Python 这是使用@classmethod的正确方法吗?
此函数用于将城市名称从一种形式映射到另一种形式,即从日语书面形式映射到英语书面形式。例如:Python 这是使用@classmethod的正确方法吗?,python,Python,此函数用于将城市名称从一种形式映射到另一种形式,即从日语书面形式映射到英语书面形式。例如: class CityNameMapping(object): CITY_NAME_MAPPING = {} with open('data/city.csv', 'r') as file: data = file.read() if not data.startswith("#"): city_entry = data.split(
class CityNameMapping(object):
CITY_NAME_MAPPING = {}
with open('data/city.csv', 'r') as file:
data = file.read()
if not data.startswith("#"):
city_entry = data.split('\t')
CITY_NAME_MAPPING[city_entry[1]] = city_entry[0]
@classmethod
def get_mapping(cls, city):
if city in cls.CITY_NAME_MAPPING:
return cls.CITY_NAME_MAPPING[city]
else:
print("No city name found: {} ".format(city))
return None
我定义了一个全局变量CITY\u NAME\u MAPPING,然后使用类方法访问它。此外,如果再次调用此函数,是否确保仅加载一次文件 一旦您在读取文件进行测试时测试add print语句,就会加载该文件
CITY\u NAME\u MAPPING
也可以在不使用classmethod的情况下访问。(self.CITY\u NAME\u MAPPING)您的@classmethod get\u MAPPING()
看起来不错,但我自己会将读取.csv
文件的代码移动到自己的函数中,并调用它:CITY\u NAME\u MAPPING=read\u CITY\u csv()
Nagoya 名古屋市