初学python,遇到一个问题,无法理解,是这样的(是用python操作Excel的例子):
from openpyxl import load_workbook
wb2 = load_workbook("balances.xlsx")
ws = wb2.active
a1 = ws['A1'].value
print(a1)
代码中的ws是一个Worksheet对象,为什么可以通过ws['A1']
的方式来得到Cell对象呢?
初学python,遇到一个问题,无法理解,是这样的(是用python操作Excel的例子):
from openpyxl import load_workbook
wb2 = load_workbook("balances.xlsx")
ws = wb2.active
a1 = ws['A1'].value
print(a1)
代码中的ws是一个Worksheet对象,为什么可以通过ws['A1']
的方式来得到Cell对象呢?
不管是ws['A1']
还是ws.A1
,访问的都是ws
中的A1
属性,有的语言只支持一种,而Python支持两种,仅此而已。顺带一提,使用[]
的方式访问对象属性,有两个优势:
for/in
这些保留字),带有空格,各种特殊字符。如ws[1]
/ws['AB CD']
/ws['\\']
/ws['for']
。这些情况是不能使用.
操作符来访问的,语法上有问题。[]
这种方式可以使用变量来作为属性名,这也是.
不能做到的(.
在访问前必须知道具体的属性名)。如:name = 'abc'
print(ws[name]) # 访问属性abc
name = 'def'
print(ws[name]) # 访问属性def
4 回答4.5k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
1 回答4.4k 阅读✓ 已解决
1 回答3.9k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
这是python的“魔法方法”,一个类可以实现或者修改一个操作方式,比如可以是对象可以使用len()、点操作、切片、比较大小等等,各都对应的有内置方法。比如我实现的一个拼接sql的,可以直接query[10, 20]实现拼接sql的limit,当然也可以任何形式的修改,就是个方法而已。
具体搜索“python魔法方法”