質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

takes 1 positional argument but 2 were given

yuujiMotoki
yuujiMotoki

総合スコア89

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1回答

0グッド

1クリップ

15347閲覧

投稿2020/08/31 10:55

#内容

クラスのコンストラクタで、URLを引数にしてHTMLをパースして、これをDBに入れる処理を書いています。

#不具合

クラスの中から、クラスを呼び出す部分で、引数が合わないというエラーが出ています。

error

1 File "C:\Users\mm05162\WebApp\patent\dbmodels.py", line 74, in __init__ 2 data = self._url_perse(url) 3TypeError: _url_perse() takes 1 positional argument but 2 were given

#質問内容

引数の書き方としては、間違ってはいないと認識しています。

メソド定義時は def Function(self,argc) で 2つの引数を定義
内部で呼ぶときは a=self.function(argc)    で 1つの引数で良い

何故かエラーとなり、ここで躓いています。

すみませんが、お知恵を拝借祖せていただきたいと思います。

python

1database.py 2from sqlalchemy import create_engine 3from sqlalchemy.orm import scoped_session,sessionmaker 4from sqlalchemy.ext.declarative import declarative_base 5import os 6import pdb 7 8database_file = os.path.join(os.path.abspath(os.path.dirname(__file__)),'data.db') 9#SQLITE 10engine = create_engine('sqlite:///'+database_file,convert_unicode=True,echo=True) 11db_session = scoped_session( 12 sessionmaker( 13 autocommit=False, 14 autoflush = False, 15 bind =engine 16 ) 17) 18Base = declarative_base() 19Base.query = db_session.query_property() 20 21def init_db(): 22 import patent.dbmodels 23 Base.metadata.create_all(bind=engine) 24

python

1dbmodels.py 2 3from sqlalchemy import Column , Integer ,String , Boolean 4from patent.database import Base 5 6import requests 7import json 8import pdb 9from bs4 import BeautifulSoup 10import pandas as pd 11import os 12from pyquery import PyQuery 13 14urll = 'https:****************' 15categories = [("BIJ",1), 16 ("IPC",2), 17 ("FT",3), 18 ("ABJ",4), 19 ("CLJ",5), 20 ("DEJ",6), 21 ("FIELD",7), 22 ("BACKGROUND",8), 23 ("SUBJECT",9), 24 ("MEANS",10), 25 ("OPERATION",11), 26 ("EFFECT",12), 27 ("EDJ",13), 28 ("DRJ",14)] 29 30class MapiosMaster(Base): 31 #テーブルの設定 Mapiosマスタ 32 __tablename__ = "Mapios_maseter" 33 #Column情報の設定 34 patent_number = Column(String,primary_key=True) 35 BIJ = Column(String) # 36 IPC = Column(String) # 37 FT= Column(String) 38 ABJ= Column(String) # 39 CLJ= Column(String) # 40 DEJ= Column(String) # 41 FIELD= Column(String) # 42 BACKGROUND= Column(String) # 43 SUBJECT= Column(String) # 44 MEANS= Column(String) # 45 OPERATION= Column(String) # 46 EFFECT= Column(String) # 47 EDJ= Column(String) # 48 DRJ= Column(String) # 49 50 def _url_perse(self,url): 51 pq = PyQuery(url) 52 flg = False 53 txt = "" 54 stri = {} 55 num = 0 56 for x in pq.items('td'): 57 for y in x.items('a'): 58 try: 59 k = y.attr('name') 60 if k in categories.keys() :#'record start' 61 if flg == False: 62 flg = True 63 else: 64 stri[title]=txt 65 txt = "" 66 title = k 67 del categories[k] 68 num = num + 1 69 except: 70 break 71 if flg == True: 72 txt = txt + x.text() 73 return stri 74 75 def __init__(self,url=None,patent_number=None): 76 data = self._url_perse(url) 77 self.patent_number= patent_number 78 self.BIJ= data["BIJ"] 79 self.IPC= data["IPC"] 80 self.FT= data["FT"] 81 self.ABJ= data["ABJ"] 82 self.CLJ= data["CLJ"] 83 self.DEJ= data["DEJ"] 84 self.FIELD= data["FIELD"] 85 self.BACKGROUND= data["BACKGROUND"] 86 self.SUBJECT= data["SUBJECT"] 87 self.MEANS= data["MEANS"] 88 self.OPERATION= data["OPERATION"] 89 self.EFFECT= data["EFFECT"] 90 self.EDJ= data["EDJ"] 91 self.DRJ= data["DRJ"] 92

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答1

0

ベストアンサー

簡単なエラー再現例で、上は通って下は通りません(質問文と同様に引数多すぎと出る)。
違ったらすみませんが、ファイルをちゃんと保存してなくて下の例の様に引数定義が抜けててたりはしないですか?
あと、質問文にはエラーの全文を載せたほうが有用な回答がつくと思いますよ。

python3

1class test(): 2 def __init__(self, url=None): 3 self.data = self._url_perse(url) 4 def _url_perse(self, url): 5 return url + "_perse" 6t1 = test("http") 7print(t1.data) 8# http_perse

python3

1class test(): 2 def __init__(self, url=None): 3 self.data = self._url_perse(url) 4 def _url_perse(self): # 引数urlなし 5 return url + "_perse" 6t1 = test("http") 7print(t1.data) 8# TypeError: _url_perse() takes 1 positional argument but 2 were given

投稿2020/09/01 01:27

jeanbiego

総合スコア3964

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

yuujiMotoki

2020/09/10 07:20

ありがとうございます 結局、ClassのinitメソドからCALLすることを辞めました。 現時点ではオブジェクトを作ってから、url_perseメソドを呼ぶ構成にしました。 エラーの詳細までは、突き詰めていませんが ご指摘の内容で、どこかが間違っていたように思います。 回答いただき有難うございました。

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。