Bonjour à tous!
J'ai ce code et j'ai une erreur que je ne comprends pas


class Playerscraping:

    import requests

    global url
    url = '...'

    def __init__(self, username):
        self.username = username
        self.respond = self.requests.get(url + username)

    @property
    def username(self):
        return self.__username

    @username.setter
    def username(self, __username):
        if self.respond.ok:
            self.__username = "test"

player = Playerscraping('pseudo')
print(player.username)


AttributeError: 'Playerscraping' object has no attribute 'respond'


Les setter ne peuvent pas accéder aux informations définies dans le __init__ ?
Modérateur
Et l'eau,

global url Smiley eek
Smiley cligne


import requests

class Playerscraping:

    def __init__(self, username, url):
        self.response = requests.get(url)
        self.username = username

    @property
    def username(self):
        return self.__username

    @username.setter
    def username(self, __username):
        if self.response.ok: #definit avant [cligne]
            self.__username = "test"

player = Playerscraping('pseudo', 'https://www.alsacreations.com/')
print(player.username)


pour response getter/setter ? Smiley cligne
Modifié par niuxe (08 Feb 2021 - 16:34)
Merci beaucoup de ta réponse, tout a bien marché.
Mais lorsque j'ai essayé de créer une nouvelle classe, j'ai encore retrouvé cette erreur,
quelle est la règle pour définir l'ordre de mes variable dans la fonction __init__ ?
Bonne soirée (:
Pourtant je comprends pas dans quel odre ça pourrait être mieux ...


import requests
from bs4 import BeautifulSoup

class Playerscraping:

    def __init__(self, username, url):
        self.respond = requests.get(url + username)
        self.sources = BeautifulSoup(self.respond.text, 'html.parser')
        self.username = username
        self.pp = None

    @property
    def pp(self):
        return self.__pp

    @pp.setter
    def pp(self, __pp):
        self.__pp = self.sources.find('div', {'class': 'profl-pp'}).find('img')['src']

    @property
    def username(self):
        return self.__username

    @username.setter
    def username(self, __username):
        self.__username = self.sources.find('title')[-len(self.username):]


url = '...'

player = Playerscraping('vzytoi', url)
print(player.pp, player.username)



AttributeError: 'Playerscraping' object has no attribute '_Playerscraping__username'


edit de la modération : pense à mettre une coloration syntaxique. Oui je sais, il n'y a pas de python. Sers toi de JS Smiley cligne
Modifié par niuxe (08 Feb 2021 - 19:21)
Modérateur
En mp, peux tu me filer ton url stp.

Sinon :

import requests
from bs4 import BeautifulSoup

class Playerscraping:

    def __init__(self, username, url):
        self.respond = requests.get(url + username)
        self.sources = BeautifulSoup(self.respond.text, 'html.parser')
        self.username = username
        self.pp = None

    @property
    def username(self):
        return self.__username

    @username.setter
    def username(self, username):
        self.__username = self.sources.find('title')[-len(username):]

    @property
    def pp(self):
        return self.__pp

    @pp.setter
    def pp(self, __pp):
        self.__pp = __pp # self.sources.find('div', {'class': 'profl-pp'}).find('img')['src']

player = Playerscraping('pseudo', 'https://www.alsacreations.com/')
print(player.pp, player.username)

Modifié par niuxe (08 Feb 2021 - 19:24)