我是Python的新手,正在开发我的第一个项目;挑战自己将OOP纳入其中。我已经在程序上预先编写了它并且工作正常,但是寻找最佳实践来将其重新编写为OOP。
我的问题:在课堂上调用美味汤是否更好,以便每个对象都是一个独立的实体,正如我在下面的唱片编辑功能中所做的那样? (我有多个课程,每个课程都会相应地调用Beautiful Soup)或者,在全球范围内调用它会更有意义吗?在这种情况下,我如何将所有必要的变量传递给每个类?
下面;我正在研究的一个示例类。输入一个乐队名称,并将带有URL的所有专辑的dict返回到专辑的维基百科页面。
import urllib.request
from bs4 import BeautifulSoup
class Band:
def __init__(self, name):
self.name = name
def discography(self):
url = 'https://en.wikipedia.org/wiki/Special:Search?search=%s_discography' % self.name
page = urllib.request.urlopen(url)
soup = BeautifulSoup(page, 'html.parser')
table = soup.find('table', attrs={'class': 'wikitable plainrowheaders'})
titles = table.findAll(attrs={'scope': 'row'})
def getAlbumTitles(url):
albumTitles = [title.text for title in titles]
return albumTitles
def getDiscogLinks(url):
album_href = [row.findAll('a') for row in titles]
clean_links = []
for i in album_href:
for href in i:
if href.parent.name == 'i':
clean_links.append('https://en.wikipedia.org' + href.get('href'))
return clean_links
return dict(zip(getAlbumTitles(url), getDiscogLinks(url)))
name = input('Enter a band name: ')
artist = Band(name)
print(artist.discography())
#beatles = Band('beatles')
#print(beatles.discography())