理解Python代码中的类方法

时间:2016-03-27 13:42:57

标签: python

我对Python知之甚少。但我试图使用一个小的Python脚本在Extract,Transform和Load(ETL)中实现某些功能。我得到了想要的结果,但仍想了解这个脚本。

from bs4 import BeautifulSoup
import urllib
import re
import string
import csv
urlHandle = urllib.urlopen("http://finance.yahoo.com/q/cp?s=^DJI")
html = urlHandle.read()
soup = BeautifulSoup(html)
table = soup.find('table', attrs = {
    'id': 'yfncsumtab'
})
rows = table.findAll('tr')

a = ''
csvfile = open("F:/data/yahoofinance.csv", 'w')
for tr in rows[5: ]:
    for td in tr.find_all('td', attrs = {
        'class': 'yfnc_tabledata1'
    }):
    a += '"' + td.get_text() + '",'
a += '\n'
csvfile.write(a)
a = '

我的问题在此代码中,soup是从BeautifulSoup(html)函数返回的对象。我对吗?所以在下一个语句中,我猜table也是一个对象,这意味着我们正在使用soup函数在find对象中搜索一个值,并且它返回一个对象

请纠正我在上述代码中了解自己的信息......

  1. urlHandle是一个类,urllib是什么? urlopen是一种静态方法。

  2. html是一个对象,urlhandle是一个类,read是一种方法。

  3. soup是一个对象,BeautifulSoup(html)是一个函数。

  4. 请对我的理解给出反馈......并纠正我经验丰富的单词出错的地方!

4 个答案:

答案 0 :(得分:1)

  1. urlHandle是一个对象,urllib是一个模块,urlopen是一个模块 功能
  2. html是一个对象,read是一种方法
  3. soup是一个对象,BeatifulSoup(html)BeautifulSoup对象的构造函数
  4. 这可能很混乱,但一般来说你可以记住,CamelCased名称是类,这使得CamelCase()成为构造函数。您导入的是一个模块,它可以包含类和/或函数。

答案 1 :(得分:1)

要技术化,我认为理解Python中的所有内容都是一个对象是很重要的。所以,类是对象,函数是对象,一切都是对象。

话虽如此,我们在此之后做出区分,例如“功能”,“课堂”等。

特别是 urllib,我们称之为module

答案 2 :(得分:1)

  1. soupBeautifulSoup
  2. 的一个实例
  3. urlHandle又是实例,urllib是一个模块,urlopen是属于此模块的函数
  4. html是对象,read是执行的方法。
  5. 您可以使用type()功能自行查找它们。

答案 3 :(得分:0)

在Python中基本上一切都是对象! 当您使用Public Sub Test() Dim oRng As Range Dim CC As ContentControl Dim LC As Integer Dim LRCC As Integer Dim LTCC As Integer Dim LE As Boolean 'Remove all content controls Set oRng = ActiveDocument.Content LTCC = LTCC + oRng.ContentControls.Count For LC = oRng.ContentControls.Count To 1 Step -1 Set CC = oRng.ContentControls(LC) If CC.LockContentControl = True Then CC.LockContentControl = False End If CC.Delete If Not LE Then LRCC = LRCC + 1 End If LE = False Next End Sub 时,您需要包含某个模块,例如import

urllib之类的东西意味着你创建一个类BeautifulSoup模块的实例(也是一个对象),你启动/构造传递html对象。

然后soup = BeautifulSoup(html)之类的东西是使用类的实例来完成某项工作的函数。在这种情况下,获取第一个具有值为'yfncsumtab'的属性id的HTML表。它回复了Beautifult标签/ obj。