【问题标题】:Python Method of method calls?Python 方法调用的方法?
【发布时间】:2021-02-20 03:46:26
【问题描述】:

今天我正在阅读 Kazil 和 Jarumul (Link) 撰写的“Data Wrangling with Python”。这是我使用 Python 编码的第一周。

在正文中,我们在第 53 页有一段 sn-p 代码,如下所示:

import json

json_data = open('Book Source Files/data/chp3/data-text.json').read() **#<< Focus Line**

data = json.loads(json_data) #json object, loads method?

for item in data:
    print('item', item)

我很难理解上面的重点线(第二行代码)。

我知道 Python 在调用对象方法时似乎遵循 object.method(Inputs) 的一般语法。我还了解到,当我对对象或方法有疑问时,我可以在不带括号的情况下调用帮助:

help(open.read) #errors. Incorrect.

但在这种情况下,看起来好像调用了两个方法:open().read()。

我尝试寻求有关此方法的帮助来解释这一点,但似乎我在这里缺少一个核心概念。这是某种速记吗?这被称为什么,在什么情况下使用?

后续问题: 有时我们将许多不同的值传递给一个函数。例如:

print('this','is','a','line','of','text')

为什么有些方法似乎有关于提供哪些项目的规则,但其他方法在调用方法时可以提供可变数量的东西?

【问题讨论】:

  • 两个方法被调用。 open() 返回一个具有read() 方法的对象。您也可以将对象从open() 保存到变量--f = open(path),然后调用方法json_data = f.read()
  • 请注意,这实际上不是推荐的做事方式:您没有引用 open() 返回的文件对象,因此无法显式关闭文件以表明你已经完成了。

标签: python python-3.x oop


【解决方案1】:

Method Chaining

open() 返回一个对象,然后调用该对象的 read() 方法。

相当于:

fd = open(path)
data = fd.read()

对于不熟悉函数的人(比如你自己)来说,链接会降低可读性。

关于您关于“某些方法似乎对提供哪些项目有规则”的问题,这完全取决于该函数的声明方式。您可以 decalre 函数以接受无 args、命名 args、关键字 args 的任意组合。

【讨论】:

  • 感谢您提供简洁易懂的答案。
猜你喜欢
  • 2018-09-03
  • 1970-01-01
  • 2021-10-14
  • 1970-01-01
  • 2022-11-21
  • 2013-11-08
  • 2021-12-23
  • 2015-04-30
  • 1970-01-01
相关资源
最近更新 更多