PyGithubは、GitHub API call to acquire the latest releaseをサポートしていないようです。実行時にPyGithubにメソッドを追加できるかどうかは私には分かりません。Pythonで実行時に外部クラスにメソッドを追加するには?
例えば、既存のコードは次のような方法があります。
# Repository.py
def get_releases(self):
"""
:calls: `GET /repos/:owner/:repo/releases <http://developer.github.com/v3/repos>`_
:rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Tag.Tag`
"""
return github.PaginatedList.PaginatedList(
github.GitRelease.GitRelease,
self._requester,
self.url + "/releases",
None
)
を私はRepository.pyクラスにこれを追加したい:
def get_latest_release(self):
return github.PaginatedList.PaginatedList(
github.GitRelease.GitRelease,
self._requester,
self.url + "/releases/latest",
None
)
私はこれを試してみましたが、私は受け取りましたエラー:
# main.py
from types import MethodType
from github import Github
from github.Repository import Repository, github
def get_latest_release(self): ...
def main():
Repository.method = MethodType(get_latest_release, None, Repository)
g = Github(<my name>, <my password>)
org = g.get_organization(<name of org>)
repo = org.get_repo(<name of repository>)
release = repo.get_latest_release()
# AttributeError: 'Repository' object has no attribute 'get_latest_release'
実行時にこのメソッドを追加することはできますか?
のGitHubの子クラスを作成しないのはなぜ:
class
割り当てがinstance
割り当てがない場合、そのクラスのすべてのインスタンスに利用可能である? – DyZ
なぜあなたは 'Repository.method'に割り当てましたか?なぜ方法? – user2357112
'Repository.get_latest_release = get_latest_release'で十分ではないでしょうか。インスタンスに割り当てようとしている場合は、 'MethodType'だけが必要です。 'repo.get_lastest_release = MethodType(get_latest_release、repo)' – AChampion