我有一个包含会话和一些API端点的父类。 该课程如下:
class pdAPI(object):
def __init__(self, username, password):
self.username = username
self.password = password
self.api = {
'home': 'https://example.com',
'members': 'https://members.example.com',
'login': 'https://example.com/login',
'account': 'https://example.com/account',
'videos': 'https://example.com/videos/'
}
self.headers = {
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36'
}
self.session = requests.Session()
self.videos = []
def login(self):
payload = {'LoginFormFrontend[username]': self.username,
'LoginFormFrontend[password]': self.password
}
print(payload)
self.session.headers.update(self.headers)
self.session.get(self.api['home'])
self.session.post(self.api['login'], data=payload)
account = self.session.get(self.api['account'])
soup = BeautifulSoup(account.text, 'html.parser')
try:
if self.username == soup.find('p', {'class': 'name'}).string:
print('successfully logged in')
else:
raise LoginError
except:
print('Login failed')
因此,当我说test = pdAPI('username', 'password')
然后test.login()
时,我的会话与登录信息将包含在test
对象中。现在我有另一个子类,需要使用session
和api
。
目前我有这个:
class Video(object):
def __init__(self, link=''):
def __init__(self):
super(Video, self).__init__()
self.link = link
def tags(self):
g = self.session.get(self.link)
print(g.text)
我想做的是,不确定是否可能,就是这样做:
video = test.Video(link='http://somelink.com')
看到test
对象已包含session
。但是,能够使用pdAPI
中Video
的会话已经足够了。