Track/Record 个实例的方法使用 Python
Track/Record of Instances' Method Usage in Python
我正在开发一个可以帮助我学习英语的子程序。
我在 class System
中开发了一些方法,这些方法是 target_word 查找器的基于爬虫的 example/semantic。
然后我通过class User
生成了一个用户,它生成了一个实例并继承了class System
中的所有方法。
然后我想做的是,每当用户使用继承到 class User
的方法时,它会跟踪使用该方法的单词并将该信息记入 list = []
中作为 sheudo数据库
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')
然后 'eschew' 附加到 yoon.hist_list -> 我该怎么做?
看起来您想要的是将属性 hist
添加到父项 class 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']
我正在开发一个可以帮助我学习英语的子程序。
我在 class System
中开发了一些方法,这些方法是 target_word 查找器的基于爬虫的 example/semantic。
然后我通过class User
生成了一个用户,它生成了一个实例并继承了class System
中的所有方法。
然后我想做的是,每当用户使用继承到 class User
的方法时,它会跟踪使用该方法的单词并将该信息记入 list = []
中作为 sheudo数据库
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')
然后 'eschew' 附加到 yoon.hist_list -> 我该怎么做?
看起来您想要的是将属性 hist
添加到父项 class 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']