【发布时间】:2017-09-13 09:01:58
【问题描述】:
我对课程还是新手,我正在努力实现一个我正在尝试实现的子类。
所以我有我的Nitin 类:
import requests
from bs4 import BeautifulSoup
class Nitin(object):
def __init__(self, username, password):
self.username = username
self.password = password
self.session = requests.session()
self.urls = {'base': 'http://nitinproductions.com/models/', 'models': 'http://nitinproductions.com/models/models.php'}
def login(self):
self.session.auth = (self.username, self.password)
r = self.session.get(self.urls['models'])
return self.session
这一步很好,因为我可以登录并且self.session 是login() 函数中的更新。现在我有一个Model 子类,它应该可以访问原始的Nitin.session。
class Model(Nitin):
def __init__(self, nitin, model):
super(Model, self).__init__(nitin)
self.model = model
self.nitin = nitin
def media(self):
r = self.nitin.session.get(self.model)
print(r.status_code)
soup = BeautifulSoup(r.text, 'html.parser')
for table in soup.find('div', {'id': 'photobar'}).findAll('table'):
print(table)
我正在尝试在我的主代码中执行此操作,如下所示:
# Imports all Nitin classes
from src import *
# Initialize Nitin object
ripper = Nitin(username='aaaa', password='bbb')
# Initialize session with u/p
ripper.login()
# Initialize Model by passing the Nitin object to it, as well as a link
model = Model(nitin=ripper, model='http://nitinproductions.com/models/lexxiliegh/lexxiliegh.php')
但这会引发以下异常:
model = Model(nitin=ripper, model='http://nitinproductions.com/models/lexxiliegh/lexxiliegh.php')
File "/home/redact/git/redact/src/Nitin.py", line 32, in __init__
super(Model, self).__init__(nitin)
TypeError: __init__() missing 1 required positional argument: 'password'
我想我正在理解所穿的课程。我实际上想做以下事情:
rippper = Nitin(username='aaaa', password='bbbb)
rippper.login()
rippper.Model.media()
但我不知道这是否可能。
【问题讨论】:
标签: python-3.x subclass super