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  名古屋市