0
votes

L'objet 'str' n'est pas appelable dans la fonction de classe Python

Je construis une bande WebScraper qui possède une classe de page 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>.

TypeError: "str 'objet n'est pas appelable p> BlockQuote>

Recherche ci-dessous mon code: P>

> 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


1 commentaires

Pouvez-vous fournir la trace complète de la pile d'erreur, pas seulement la dernière ligne?


3 Réponses :


2
votes

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


0 commentaires

0
votes

Vous avez fait _build_url une propriété, donc self._build_url obtient le STR sans parens d'appel, mais vous ajoutez des parens pour le faire < code> self.url = self._build_url () . Donc, vous essayez d'appeler la chaîne résultante. Soit supprimer le décorateur @property pour laisser une méthode normale ou supprimer la parens d'appel au point d'utilisation pour utiliser la propriété sans l'appeler.


0 commentaires

0
votes

Vous avez fait _build_url A @property . Étant donné que lorsque vous souhaitez appeler cette méthode, vous ne devez pas utiliser self._build_url () , mais self._build_url (sans crochets).


0 commentaires