Python 将方法追加到类

Python 将方法追加到类,python,robotframework,partial-classes,Python,Robotframework,Partial Classes,你好,我有一个RobotFramework库用于请求 /usr/local/lib/python2.7/dist-packages/RequestsLibrary/RequestsKeywords.py 这缺少一些代码来公开Python.Requests库中的摘要身份验证方法。我想做的是,而不是侵入 /usr/local/lib/python2.7/dist-packages/RequestsLibrary/RequestsKeywords.py 我想将if添加到我所在的代码目录中,并将其附加到

你好,我有一个RobotFramework库用于请求 /usr/local/lib/python2.7/dist-packages/RequestsLibrary/RequestsKeywords.py

这缺少一些代码来公开Python.Requests库中的摘要身份验证方法。我想做的是,而不是侵入 /usr/local/lib/python2.7/dist-packages/RequestsLibrary/RequestsKeywords.py

我想将if添加到我所在的代码目录中,并将其附加到导入的类中

class=RequestsKeywords

在C#等语言中,我会使用分部类,但Python中似乎没有这类东西,也不知道如何处理

下面是我想“附加”到 /usr/local/lib/python2.7/dist-packages/RequestsLibrary/RequestsKeywords.py 图书馆

有什么建议吗

因此,我的测试如下所示,您使用sys.path.append指定的python代码将位于RequestsKeywordsLocal.py文件中 对吗


您可以选择子类:

class MyNewXThing(XThing):
    def my_added_method(self, x, y, z):
        # ...
并在整个代码中使用
MyNewXThing
而不是
XThing
。或:

def my_added_method(self, x, y, z):
    # ...
XThing.my_added_method = my_added_method

第一个选项更灵活,因为它不会更改任何其他代码的XThing。

您可以子类化:

class MyNewXThing(XThing):
    def my_added_method(self, x, y, z):
        # ...
并在整个代码中使用
MyNewXThing
而不是
XThing
。或:

def my_added_method(self, x, y, z):
    # ...
XThing.my_added_method = my_added_method

第一个选项更灵活,因为它不会更改任何其他代码的XThing。

您可以子类化:

class MyNewXThing(XThing):
    def my_added_method(self, x, y, z):
        # ...
并在整个代码中使用
MyNewXThing
而不是
XThing
。或:

def my_added_method(self, x, y, z):
    # ...
XThing.my_added_method = my_added_method

第一个选项更灵活,因为它不会更改任何其他代码的XThing。

您可以子类化:

class MyNewXThing(XThing):
    def my_added_method(self, x, y, z):
        # ...
并在整个代码中使用
MyNewXThing
而不是
XThing
。或:

def my_added_method(self, x, y, z):
    # ...
XThing.my_added_method = my_added_method

第一个选项更灵活,因为它不会对任何其他代码更改
XThing

您可以导入类,并添加所需的函数

sys.path.append('/usr/local/lib/python2.7/dist-packages/RequestsLibrary/')
import RequestsKeywords as RequestsKeywords


class RequestsKeywords_local(RequestsKeywords):

    def create_digest_session(self, alias, url, auth, headers={}, cookies=None, timeout=None, proxies=None, verify=False):

       """ Create Session: create a HTTP session to a server

       `url` Base url of the server

       `alias` Robot Framework alias to identify the session

       `headers` Dictionary of default headers

       `auth` List of username & password for HTTP Digest Auth

       `timeout` connection timeout

       `proxies` proxy server url

       `verify` set to True if Requests should verify the certificate
       """
       digest_auth = requests.auth.HTTPDigestAuth(*auth) if auth else None
       return self._create_session(alias, url, headers, cookie, digest_auth, timeout, proxies, verify)

    def __init__(self,**kwargs):

        RequestsKeywords.__init__(self,**kwargs)

您可以导入该类,并添加所需的函数

sys.path.append('/usr/local/lib/python2.7/dist-packages/RequestsLibrary/')
import RequestsKeywords as RequestsKeywords


class RequestsKeywords_local(RequestsKeywords):

    def create_digest_session(self, alias, url, auth, headers={}, cookies=None, timeout=None, proxies=None, verify=False):

       """ Create Session: create a HTTP session to a server

       `url` Base url of the server

       `alias` Robot Framework alias to identify the session

       `headers` Dictionary of default headers

       `auth` List of username & password for HTTP Digest Auth

       `timeout` connection timeout

       `proxies` proxy server url

       `verify` set to True if Requests should verify the certificate
       """
       digest_auth = requests.auth.HTTPDigestAuth(*auth) if auth else None
       return self._create_session(alias, url, headers, cookie, digest_auth, timeout, proxies, verify)

    def __init__(self,**kwargs):

        RequestsKeywords.__init__(self,**kwargs)

您可以导入该类,并添加所需的函数

sys.path.append('/usr/local/lib/python2.7/dist-packages/RequestsLibrary/')
import RequestsKeywords as RequestsKeywords


class RequestsKeywords_local(RequestsKeywords):

    def create_digest_session(self, alias, url, auth, headers={}, cookies=None, timeout=None, proxies=None, verify=False):

       """ Create Session: create a HTTP session to a server

       `url` Base url of the server

       `alias` Robot Framework alias to identify the session

       `headers` Dictionary of default headers

       `auth` List of username & password for HTTP Digest Auth

       `timeout` connection timeout

       `proxies` proxy server url

       `verify` set to True if Requests should verify the certificate
       """
       digest_auth = requests.auth.HTTPDigestAuth(*auth) if auth else None
       return self._create_session(alias, url, headers, cookie, digest_auth, timeout, proxies, verify)

    def __init__(self,**kwargs):

        RequestsKeywords.__init__(self,**kwargs)

您可以导入该类,并添加所需的函数

sys.path.append('/usr/local/lib/python2.7/dist-packages/RequestsLibrary/')
import RequestsKeywords as RequestsKeywords


class RequestsKeywords_local(RequestsKeywords):

    def create_digest_session(self, alias, url, auth, headers={}, cookies=None, timeout=None, proxies=None, verify=False):

       """ Create Session: create a HTTP session to a server

       `url` Base url of the server

       `alias` Robot Framework alias to identify the session

       `headers` Dictionary of default headers

       `auth` List of username & password for HTTP Digest Auth

       `timeout` connection timeout

       `proxies` proxy server url

       `verify` set to True if Requests should verify the certificate
       """
       digest_auth = requests.auth.HTTPDigestAuth(*auth) if auth else None
       return self._create_session(alias, url, headers, cookie, digest_auth, timeout, proxies, verify)

    def __init__(self,**kwargs):

        RequestsKeywords.__init__(self,**kwargs)

嘿,谢谢,伙计们,我会试试所有的,看看有什么用。。Mat我还是不太明白第一个例子看起来像Ed贴的对吗?第二种方法是正确的…只需在我的方法之后使用pass RequestsKeywords.create\u digest\u session=create\u digest\u session,对吗?def create_digest_session(self、别名、url、auth、headers={}、cookies=None、timeout=None)pass RequestsKeywords.create_digest_session=create_digest_session@matsjoyce第一个示例是相同的,它是上述示例的一般形式。对于第二个示例,您将使用现有的函数(而不是pass),如您所说,RequestsKeywords.create_digest_session=create_digest_session。我收到了一个错误,看起来我不理解[error]文件“/home/robm/code/python/robotframework/tests/requests/validateDUT.txt”中的错误:导入测试库“/home/robm/code/python/robotframework/tests/requests/requestskeyordsocal.py”失败:类型错误:调用元类基模块时出错。\uu init\uuu()最多接受2个参数(给定3个)嘿,谢谢,伙计们,我会试试所有的,看看有什么用。。Mat我还是不太明白第一个例子看起来像Ed贴的对吗?第二种方法是正确的…只需在我的方法之后使用pass RequestsKeywords.create\u digest\u session=create\u digest\u session,对吗?def create_digest_session(self、别名、url、auth、headers={}、cookies=None、timeout=None)pass RequestsKeywords.create_digest_session=create_digest_session@matsjoyce第一个示例是相同的,它是上述示例的一般形式。对于第二个示例,您将使用现有的函数(而不是pass),如您所说,RequestsKeywords.create_digest_session=create_digest_session。我收到了一个错误,看起来我不理解[error]文件“/home/robm/code/python/robotframework/tests/requests/validateDUT.txt”中的错误:导入测试库“/home/robm/code/python/robotframework/tests/requests/requestskeyordsocal.py”失败:类型错误:调用元类基模块时出错。\uu init\uuu()最多接受2个参数(给定3个)嘿,谢谢,伙计们,我会试试所有的,看看有什么用。。Mat我还是不太明白第一个例子看起来像Ed贴的对吗?第二种方法是正确的…只需在我的方法之后使用pass RequestsKeywords.create\u digest\u session=create\u digest\u session,对吗?def create_digest_session(self、别名、url、auth、headers={}、cookies=None、timeout=None)pass RequestsKeywords.create_digest_session=create_digest_session@matsjoyce第一个示例是相同的,它是上述示例的一般形式。对于第二个示例,您将使用现有的函数(而不是pass),如您所说,RequestsKeywords.create_digest_session=create_digest_session。我收到了一个错误,看起来我不理解[error]文件“/home/robm/code/python/robotframework/tests/requests/validateDUT.txt”中的错误:导入测试库“/home/robm/code/python/robotframework/tests/requests/requestskeyordsocal.py”失败:类型错误:调用元类基模块时出错。\uu init\uuu()最多接受2个参数(给定3个)嘿,谢谢,伙计们,我会试试所有的,看看有什么用。。Mat我还是不太明白第一个例子看起来像Ed贴的对吗?第二种方法是正确的…只需在我的方法之后使用pass RequestsKeywords.create\u digest\u session=create\u digest\u session,对吗?def创建摘要会话(self,a