私はまだクラスが新しく、実装しようとしているサブクラスと少し苦労しています。サブクラスのスーパークラスオブジェクトへのアクセス
だから私は、次のような私の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)
私は次のように私のメインのコードでこれを行うにしようとしています:
しかし、これは次の例外発生させます:私はworngクラスを理解すると思う
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()
しかしこれは可能かどうかわかりません。
あなたはそれが動作提案された変更を行った後、私はNitin.Model.some_function_from_Model() ''のようなModel'クラスを呼び出すための方法があるかどうかを知りたいのですが '私が持っていた後、ニティンを初期化した。 'Nitin'が初期化され、セッションが作成されたところで、' Model'で作業を続けることができます。 – rhillhouse
@ou_snaaksie。次に、 'Nitin .__ init__'に' self.model'を初期化します。今あなたが外部コードでやっているように 'Model .__ init__'に' self'を渡すことができます。 –
私はかなり理解できません..ごめんなさい。あなたはちょうど言ったことであなたの答えを更新してもよろしいですか?クラスは私を混乱させている – rhillhouse