槽多无口, 里面的接口还有 v20140815 , 所有的 class 看起来都一样, 一样的长, 一样的难以理解
举个例子 CreateOnlineDataBaseTaskRequest
# 阿里云的代码
from aliyunsdkcore.request import RpcRequest
class CreateOnlineDatabaseTaskRequest(RpcRequest):
def __init__(self):
RpcRequest.__init__(self, 'Rds', '2014-08-15', 'CreateOnlineDatabaseTask','rds')
def get_ResourceOwnerId(self):
return self.get_query_params().get('ResourceOwnerId')
def set_ResourceOwnerId(self,ResourceOwnerId):
self.add_query_param('ResourceOwnerId',ResourceOwnerId)
def get_MigrateTaskId(self):
return self.get_query_params().get('MigrateTaskId')
def set_MigrateTaskId(self,MigrateTaskId):
self.add_query_param('MigrateTaskId',MigrateTaskId)
def get_DBName(self):
return self.get_query_params().get('DBName')
def set_DBName(self,DBName):
self.add_query_param('DBName',DBName)
def get_ResourceOwnerAccount(self):
return self.get_query_params().get('ResourceOwnerAccount')
def set_ResourceOwnerAccount(self,ResourceOwnerAccount):
self.add_query_param('ResourceOwnerAccount',ResourceOwnerAccount)
def get_ClientToken(self):
return self.get_query_params().get('ClientToken')
def set_ClientToken(self,ClientToken):
self.add_query_param('ClientToken',ClientToken)
def get_OwnerAccount(self):
return self.get_query_params().get('OwnerAccount')
def set_OwnerAccount(self,OwnerAccount):
self.add_query_param('OwnerAccount',OwnerAccount)
def get_DBInstanceId(self):
return self.get_query_params().get('DBInstanceId')
def set_DBInstanceId(self,DBInstanceId):
self.add_query_param('DBInstanceId',DBInstanceId)
def get_CheckDBMode(self):
return self.get_query_params().get('CheckDBMode')
def set_CheckDBMode(self,CheckDBMode):
self.add_query_param('CheckDBMode',CheckDBMode)
def get_OwnerId(self):
return self.get_query_params().get('OwnerId')
def set_OwnerId(self,OwnerId):
self.add_query_param('OwnerId',OwnerId)
# 我想要的代码
class DatabaseTask:
def __init__(self, **kwargs):
self.migrate_task = migrate_task
self.db_name = db_name
self.resource_owner = resource_owner
self.token = token
self.check_db_mode = check_db_mode
def run():
# make some request
if __name__ == '__main__':
new_task = DatabaseTask(migrate_task=1, db_name='some_db',
resource_owner='some_user', token='some_token',
check_db_mode='some_mode')
result = new_task.run()
result.fetch()
为什么不写成 一个 DatabaseTask 对象, 对象有几个属性值 Instance_id
等 ,然后再调用 DatabaseTask.create()
这些 set 和 get 的方法, 不就是实现了 python 的属性值吗?
我这里想问一下大家, 如果我这么做了, 会收到律师函吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.