2016-03-05 26 views
0

我正在尝试为测试构建一个ETL机器。将自己称为静态方法的“这个类”; python

class TestETLMachine(object): 

    API_URL = 'https://9g9xhayrh5.execute-api.us-west-2.amazonaws.com/test/data' 

    @staticmethod 
    def get_email_data(cls): 
     headers = {'accept': 'application/json'} 
     r = requests.get(cls.API_URL, headers=headers) 
     email_objects_as_list_of_dicts = json.loads(r.content)['data'] 
     return email_objects_as_list_of_dicts 

    @staticmethod 
    def get_distinct_emails(cls): 
     email_data = cls.get_email_data() 
     print email_data 

get_distinct_emails我想打电话给TestETLMachine.get_email_data(),让它知道我指的是这个类。这个对象是一个静态机器,意味着它总是做同样的事情,并且使它的实例是没有意义的,而且看起来很糟糕。当我尝试调用get_email_data现在我通过cls再也看不到了:

In [9]: TestETLMachine.get_email_data() 
--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-9-cf48fc1a9c1d> in <module>() 
----> 1 TestETLMachine.get_email_data() 

TypeError: get_email_data() takes exactly 1 argument (0 given) 

如何调用这些类的方法和使用的其他类的方法在我的下一个类的方法? Salamat

+1

除非这是一个非常简单的例子,否则我怀疑你完全需要一个类。 'API_URL'只用于一种方法,'cls'只用于访问该变量。对网址进行硬编码,或者将其设置为'get_email_data'的参数,并且只剩下两个普通函数:get_email_data(url ='https:// ...')'和'get_distinct_emails'(它调用' get_email_data')。 – chepner

+0

这只是一个开始,它是一个5部分测试 – codyc4321

回答

相关问题