Je construis une bande WebScraper qui possède une classe de page TypeError: "str 'objet n'est pas appelable p>
BlockQuote> Recherche ci-dessous mon code: P> code>. Cependant, je reçois le message d'erreur Follwing lors de l'attribution de l'Attribut URL code> à la classe de page code> code>.
> Traceback (most recent call last): File "C:\Program
> Files\JetBrains\PyCharm Community Edition
> 2019.1.3\helpers\pydev\pydevd.py", line 2060, in <module>
> main() File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.1.3\helpers\pydev\pydevd.py", line 2054, in main
> globals = debugger.run(setup['file'], None, None, is_module) File "C:\Program Files\JetBrains\PyCharm Community Edition
> 2019.1.3\helpers\pydev\pydevd.py", line 1405, in run
> return self._exec(is_module, entry_point_fn, module_name, file, globals, locals) File "C:\Program Files\JetBrains\PyCharm Community
> Edition 2019.1.3\helpers\pydev\pydevd.py", line 1412, in _exec
> pydev_imports.execfile(file, globals, locals) # execute the script File "C:\Program Files\JetBrains\PyCharm Community Edition
> 2019.1.3\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
> exec(compile(contents+"\n", file, 'exec'), glob, loc) File "C:/single_offers.py",
> line 146, in <module>
> main() File "C:/single_offers.py",
> line 68, in main
> p = Page(id, cur_id, proxy=proxy) File "C:/single_offers.py",
> line 109, in __init__
> self.url = self._build_url() TypeError: 'str' object is not callable
>
> Process finished with exit code 1
3 Réponses :
Vous avez déclaré _build_url code> pour être une propriété em>. En conséquence, vous y accédez avec le nom de l'attribut, pas en l'appelant: self.url = self._build_url
Vous avez fait _build_url code> une propriété, donc self._build_url code> obtient le STR code> sans parens d'appel, mais vous ajoutez des parens pour le faire < code> self.url = self._build_url () code>. Donc, vous essayez d'appeler la chaîne résultante. Soit supprimer le décorateur @property code> pour laisser une méthode normale ou supprimer la parens d'appel au point d'utilisation pour utiliser la propriété sans l'appeler. P>
Vous avez fait _build_url code> A @property code>. Étant donné que lorsque vous souhaitez appeler cette méthode, vous ne devez pas utiliser self._build_url () code>, mais self._build_url code> (sans crochets). P>
Pouvez-vous fournir la trace complète de la pile d'erreur, pas seulement la dernière ligne?