Python类使用共享状态的功能?

时间:2019-03-10 21:51:11

标签: python function class oop

我正在尝试改善我的python代码,并已开始使用类对相关的方法和变量进行分组。

使用能够访问在类中初始化的变量的函数时,最佳实践是什么?我应该只访问函数中的变量吗?还是显式传递变量以明确表明我依赖它?

我创建了两个示例来说明这个问题的意思。哪种方法更好?

# method 1
class UploadForm(object):
    def __init__(self, form_data):
        self.file_name = form_data.get('file_name')

    def validate(self):
        agency_name = self.extract_agency_name(self.file_name)

    @staticmethod
    def extract_agency_name(file_name):
        pattern = re.search('^[CFS]Y\d{4} (.+?)[.](?:xls|csv)$', file_name, re.I)
        if pattern:
            agency_name = pattern.group(1)
            return agency_name


# method 2
class UploadForm(object):
    def __init__(self, form_data):
        self.file_name = form_data.get('file_name')

    def validate(self):
        agency_name = self.extract_agency_name()

    def extract_agency_name(self):
        pattern = re.search('^[CFS]Y\d{4} (.+?)[.](?:xls|csv)$', self.file_name, re.I)
        if pattern:
            agency_name = pattern.group(1)
            return agency_name

1 个答案:

答案 0 :(得分:-1)

出于以下原因,首选方法2。

  1. 成员变量应通过 self 访问。
    • 通过使用self,您可以清楚地看到自己正在引用同一对象的 file_name 变量。
  2. 装饰器可能会成为开销。
    • 装饰器是方法或变量的包装器。
  3. 传递更多的参数会消耗更多的内存。
    • 每个参数占用内存。