相关疑难解决方法(0)

在python中与getattribute和setattribute混淆

我想知道如果我有这样的课

class Test(object):
    def __init__(self):
        self.a = 20
        self.b = 30

obj = Test()
Run Code Online (Sandbox Code Playgroud)

当我这样做obj.a,然后首先被称为?

__getattr__getattr或查找中__dict__['a']

与...相同 setattr

根据Python 2.7文档:

宾语.__getattr __(自我,名字)

当属性查找未在通常位置找到属性时调用(即,它不是实例属性,也不是在类树中找到自己).name是属性名称.此方法应返回(计算)属性值或引发AttributeError异常.

它说在通常的地方找不到.什么是平常的地方.我想知道什么时候被召唤

与此有什么不同 object.__getattribute__(self, name)

任何人都可以举例说明所有的使用方法

python python-2.7

9
推荐指数
1
解决办法
2万
查看次数

为什么`head` 需要`()` 而`shape` 不需要?

在以下代码中,我将一个 csv 文件导入 Python 的 Pandas 库并显示前 5 行,并查询 Pandas 数据框的“形状”。

import pandas as pd
data = pd.read_csv('my_file.csv')
data.head() #returns the first 5 rows of the dataframe
data.shape  # displays the # of rows and # of columns of dataframe
Run Code Online (Sandbox Code Playgroud)
  1. 为什么head()方法需要后面的空括号headshape不需要?这与他们的类型有关吗?如果我调用时head没有使用空括号,则不会得到相同的结果。它head是一种方法,shape只是一个属性吗?

  2. 我如何将上述问题的答案推广到 Python 的其余部分?我在这里不仅要学习大熊猫,还要学习 Python。例如,诸如“当 _____ 是这种情况时,如果不提供参数,则必须包含空括号,但对于其他属性则不必?

python methods dataframe pandas

5
推荐指数
1
解决办法
1969
查看次数

数据属性是否覆盖Python类中的方法属性?

根据官方文档,“数据属性覆盖具有相同名称的方法属性”。但是,我发现这是不正确的。

class C:
    x = 111
    def x(self):
        print('I am x')
c = C()
print(c.x)
Run Code Online (Sandbox Code Playgroud)

上面代码中的print语句显示cx是一种方法,而不是分配给111的数据属性。因此,此代码表明数据属性不一定覆盖具有相同名称的方法属性,并且文档错误。谁能确认我的发现?

PS我在Python 3.5和Python 2.7中都尝试了该代码,并获得了相同的结果。

python

1
推荐指数
1
解决办法
690
查看次数

标签 统计

python ×3

dataframe ×1

methods ×1

pandas ×1

python-2.7 ×1