在Python中跟踪/记录实例的方法使用情况

2024-06-07 23:10:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个子程序,可以帮助我的英语学习。你知道吗

我在class System中开发了一些方法,它们是基于爬虫的示例/目标单词查找器的语义。你知道吗

然后我通过class User生成一个用户,它生成一个实例并继承class System中的每个方法。你知道吗

然后我想做的是,每当用户使用继承到class User的方法时,它都会跟踪该方法用于哪个单词,并将该信息作为sheudo数据库记录在list = []

class System:
    def wik_sem(self, target_word):
        print("start searching for the target_word {}\n".format(target_word))
        driver.get("https://en.wiktionary.org/wiki/" + target_word) #open the page of chronological page
        elem_info =[]
        for i in range(0, 20): #20 is the assumed maximum number of li[]
            try:
                element = '//*[@id="mw-content-text"]/div/ol[1]/li['+str(i)+"]"
                elem_info.append(driver.find_elements_by_xpath(element))
            except:
                break     
        reference_wik = []
        for i in range(0, len(elem_info)):
            if elem_info[i] == []:
                pass
            else:
                reference_wik.append((elem_info[i][0].text).split("\n")[0].split())
        #simple_parser


        # remove 'qutations','▼'
        for i in range(0,len(reference_wik)):    
            if '▼' in reference_wik[i]:
                del reference_wik[i][(len(reference_wik[i])-1)] #use del twice to delete both of '▼' and 'quotations'
                del reference_wik[i][(len(reference_wik[i])-1)] #use del to remove an element in list with index
        #remove the first parenthesized element, e.g. (countable) 'the thing which can be counted' ...
        for i in range(0,len(reference_wik)):    
            if '(' in list(reference_wik[i][0]):
                del reference_wik[i][0] #use del to remove an element in list with index
        #remove '.' at the end of each definition
        for i in range(0,len(reference_wik)): 
            if '.' in list(reference_wik[i][-1]):
                reference_wik[i][-1] = reference_wik[i][-1].replace(".", "")
        print("Definition of {} from wiktionary.org".format(target_word))
        for i in range(len(elem_info)):
            try:
                print(elem_info[i][0].text)
            except:
                pass

        return reference_wik

    def wis(self, target_word):
        driver.get("https://wordsinasentence.com/" + target_word+ "-in-a-sentence/") #open the page of chronological page
        sentence_numb = 20
        for i in range(1, sentence_numb): 
            try:
                elem_info = driver.find_element_by_xpath('//*[@id="content"]/p[{}]'.format(i))
                if 'WATCH' in elem_info.text.split():
                    break
                print(elem_info.text+"\n")
            except:
                pass

    def finder(self, target_word):
        reference_wik = wik_sem(target_word)
        print('\n\n')
        wis(target_word)
        return reference_wik

    def ety(self, target_word):
        print("start searching for the etymology of the target_word {}\n".format(target_word))
        driver.get("https://en.wiktionary.org/wiki/" + target_word)
        elem_info = driver.find_element_by_xpath('//*[@id="mw-content-text"]/div/p[3]')
        return elem_info.text

class User(System):
    def __init__(self, id_ = None):
        super().__init__()
        id_ = uuid4()
        self.id = id_
        self.hist = []

yoon = User() #class instantiation
yoon.finder('eschew')

然后将“回避”附加到yoon.hist\u列表->;我该怎么做?


Tags: oftheinselfinfoidtargetfor
1条回答
网友
1楼 · 发布于 2024-06-07 23:10:15

看起来您要做的是将属性hist添加到父类System而不是子类User,然后将reference_wik附加到方法finder中的列表self.hist而不是返回它:

class System():

    def __init__(self):
        self.hist = []

    #def wik_sem, wis ...

    def finder(self,target_word):
        reference_wik = wik_sem(target_word)
        print('\n\n')
        wis(target_word)
        self.hist.append(reference_wik)


    #rest of System def...

那么User可以定义为

class User(System):
   def __init__(self):
   super().__init__()
   id_ = uuid4()
   self.id = id_

那么

yoon = User()
yoon.finder('eschew')
print(yoon.hist)

是:

#...output from print calls within finder...
['eschew']

相关问题 更多 >

    热门问题