在OOP编码中,有一个长期的命名约定来命名访问器/更改器方法get_something和set_something。它们直接访问或操纵属性。
但是,如果某种东西的类型像Python中的dict
或list
,那么命名操纵函数的更好选择是什么?
例如
我有一个名为list
的{{1}},其中包含我要阅读的书籍的名称。我想命名将新书添加到booklist
中的函数。
booklist
booklist = ["Clean Code", "Code Complete"]
def insert_book_into_booklist(new_book):
booklist.append(new_book)
有更好的选择吗?就像insert_book_into_booklist
或append_book_in_booklist
一样?
set_booklist
我有一个名为的{{1}}。关键是我要阅读的书名,而值是国际标准书号(ISBN)。我想命名将新书插入
dict
的函数。
booklist
booklist
有更好的选择吗?就像booklist = {"Clean Code": "9789862017050", "Code Complete": "9789536185344"}
def insert_book_into_booklist(new_book, isbn):
if new_book not in booklist:
booklist[new_book] = isbn
一样?
谢谢。
答案 0 :(得分:3)
就像您提到的OOP一样,假装您的“书本”是课程的成员:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import datetime
from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
my_url = 'https://www.cryptocompare.com/'
binary = FirefoxBinary('C:/Program Files/Mozilla Firefox/firefox.exe')
options = Options()
options.set_headless(headless=True)
options.binary = binary
cap = DesiredCapabilities().FIREFOX
cap["marionette"] = True
driver = webdriver.Firefox(firefox_options=options, capabilities=cap, executable_path="C:/Users/Genti/AppData/Local/Programs/Python/Python36-32/Lib/site-packages/selenium/geckodriver.exe")
driver.get(my_url)
names = [name.text.split('\n')[0] for name in WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.CLASS_NAME, 'desktop-name')))]
prices = [price.text for price in WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.CLASS_NAME, 'current-price-value')))]
print(datetime.datetime.now())
for name, price in zip(names, prices):
print(name + " - " + price)
因此,如果要将新书添加到列表中,请将方法命名为动词,以完成所需的操作,例如“ add_book”。另外,您不需要添加“ _into_booklist”,因为您的课程本身就是BookList,这足以了解将图书添加到何处:
class BookList(object):
def __init__(self):
self.booklist = []
此外,您可以使该方法与ISBN一起使用:
class BookList(object):
def __init__(self):
self.booklist = []
def add_book(book):
self.booklist.append(book)
另外,如Ev。 Kounis在评论中说,您可以省略方法的“ _book”部分,而仅保留“ add”,但是如果将来您的课程变得更加复杂,则此名称可能会产生歧义。例如,如果您具有“ add_books”方法,则可以稍后再添加“ add_books”方法(一次添加很多书),并且这些名称的含义很容易理解。但是,如果您将其简化为“添加”,则将不清楚该方法实际上添加了什么。