Çözüldü Python nesne yönelimli programlama kodundaki hata nedir?

  • Konuyu başlatan GT 145
  • Başlangıç Tarihi
  • Mesaj 16
  • Görüntüleme 768
Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

GT 145

Decapat
Katılım
29 Temmuz 2021
Mesajlar
723
Çözümler
1
Arkadaşlar nesne yönelimli programlamada aşırı kötüyüm.
Şu kodu nasıl düzeltebilirim:
Python:
import requests as req
from bs4 import BeautifulSoup as bs
import lxml

class user():
    def __init__(self,username):
        self.username=username
        self.page=page
        page="https://omlet.gg/profile/"+username
    def name(self):
        r=req.get(self.page)
        s=bs(r.content,"lxml")
        return s.find("a",attrs={"class":"username-text"}).text

print(user.name("username"))

Hata mesajı :
AttributeError: 'str' object has no attribute 'page'
 
Son düzenleme:
Çözüm
AttributeError: 'str' object has no attribute 'page' hatası.
Emin değilim ama bunu da eklemeniz gerekiyor olabilir:
Kod:
user1 = user("username")
print(user1.name())

Detayını daha iyi bilen arkadaşlar cevaplayacaktır diye düşünüyorum.
Çok hata var. Öncelikle page'i tanımladan self.page = page tanımını yapıyorsunuz. Ayrıca Python'da nesneler böyle işlemiyor. Main'de nesneyi direkt kullanmaya çalışıyorsunuz ama metot statik olmadığı için önce o nesnenin bir instance'ına ihtiyacınız var. Önce instance'ı kuracaksınız x = user("username") şeklinde. Sonra o instance'ı kullanacaksınız. Siz instance olmadan user.name("username") yapınca ortada bir self olmuyor çünkü öyle bir nesneyi daha önce tanımlamadınız. Dolayısıyla program self olarak "username" stringini alıyor ve doğal olarak stringin .page diye bir metodu yok diyor.
 
Çok hata var. Öncelikle Page'i tanımladan self. Page = page tanımını yapıyorsunuz. Ayrıca Python'da nesneler böyle işlemiyor. Main'de nesneyi direkt kullanmaya çalışıyorsunuz ama metot statik olmadığı için önce o nesnenin bir instance'ına ihtiyacınız var. Önce Instance'ı kuracaksınız X = user("username") şeklinde. Sonra o Instance'ı kullanacaksınız. Siz instance olmadan user. Name("username") yapınca ortada bir self olmuyor çünkü öyle bir nesneyi daha önce tanımlamadınız. Dolayısıyla program self olarak "username" stringini alıyor ve doğal olarak stringin. Page diye bir metodu yok diyor.

Hocam tam anlayamadım zahmet olmazsa kodu düzeltip atsanız. İlk kodla karşılaştırsam.
 
Bu modülleri kullanmadığım için tam ne yapmaya çalıştığınızı bilmiyorum. Sadece bariz hataları düzeltiyorum, hala hata olabilir kodda.

Kod:
import requests as req
from bs4 import BeautifulSoup as bs
import lxml

class user():
    def __init__(self,username):
        self.username = username
        self.page= "https://omlet.gg/profile/" + username
    def name(self):
        r=req.get(self.page)
        s=bs(r.content,"lxml")
        return s.find("a",attrs={"class":"username-text"}).text

#Alttaki instance, istediğiniz ismi verebilirsiniz. 
user_instance = user("username")
print(user_instance.name())
 
Bu modülleri kullanmadığım için tam ne yapmaya çalıştığınızı bilmiyorum. Sadece bariz hataları düzeltiyorum, hala hata olabilir kodda.

Kod:
import requests as req.
from bs4 import BeautifulSoup as bs.
import lxml.

class user():
 def __init__(self,username):
 self.username = username.
 self.page= "https://omlet.gg/profile/" + username.
 def name(self):
 r=req.get(self.page)
 s=bs(r.content,"lxml")
 return s.find("a",attrs={"class":"username-text"}).text

#Alttaki instance, istediğiniz ismi verebilirsiniz.
user_instance = user("username")
print(user_instance.name())

Tamam hocam anladım hatamı şimdi teşekkürler.
 
Arkadaşlar kafayı yedim kodum şu:

Python:
import requests as req
from bs4 import BeautifulSoup as bs
import lxml

class user():
    def __init__(self,username):
        self.username = username
        self.page= "https://omlet.gg/profile/" + username
    def name(self):
        r=req.get(self.page)
        s=bs(r.content,"lxml")
        n=s.find('a',attrs={"class":"username-text"})
        return n.text

user = user("username")
print(user.name())

Hata:
AttributeError: 'NoneType' object has no attribute 'text'
 

Geri
Yukarı