Python 如何将一个值作为参数传递给两个方法?

Python 如何将一个值作为参数传递给两个方法?,python,python-3.x,Python,Python 3.x,我有一个简单的类: 连接有db连接 import pandas as pd from animal import kettle class cat: def foo(connection): a=pd.read_sql('select * from zoo',connection) return1= kettle.boo1(a) return2= kettle.boo2(a) return return1,return2

我有一个简单的类:

连接有db连接

import pandas as pd
from animal import kettle
class cat:
    def foo(connection):
        a=pd.read_sql('select * from zoo',connection)
        return1= kettle.boo1(a)
        return2= kettle.boo2(a)
        return return1,return2
现在我想把a传给水壶的boo1和boo2,我传给上面的foo的方式正确吗

我认为上面的方法是正确的,我试过这种方法,但这种方法正确吗

animal.py: 抱歉,如果这没有任何意义,
我的意图是将a同时传递给cattle类的boo1和boo2这看起来是正确的方法:通过将pd.read_sql'select*from zoo'的返回值赋值,首先连接到a,然后将a传递给cattle.boo1和cattle.boo2,您可以确保只执行一次可能耗时的数据库IO

当您传递诸如list/dicts/dataframes之类的对象时,这个设计模式需要记住的一件事是,kettle.boo1是否会更改a中的值。如果确实如此,Ketter.boo2将接收修改后的a版本作为输入,这可能会导致意外行为

下面是一个非常简单的示例:

>>>def foox: ... x[0]=“b” ... >>>x=['a']定义长度为1的列表 >>>foox调用修改x中第一个元素的函数 >>>printx x x中的值已更改 ['b']
无论你的问题是什么,都有很多可能的解决方案。我假设您刚开始使用Python进行面向对象编程,并根据

unbound method boo1() must be called with kettle instance as first argument
并且可能想要这个解决方案:

为类方法指定一个实例参数:

def boo1(self, return1):
在cat.foo中实例化cattle类:

k = kettle()
然后像这样使用它:

k.boo1(a)
boo2方法也是如此

您可能还想:

return return1  # instead of or after print(return1)

因为您的方法目前没有返回任何值。

是否有任何迹象表明它不正确?你有没有想到另一种方法来通过考试?这行得通吗?绝对不行,伙计,我想如果我的方法不正确的话,还有其他可能的方法来做,这是正确的。你应该尝试一下,然后检查出了什么问题。确保只做一次可能耗时的数据库IO。你说的这个伴侣是什么意思?我的意思是,另一种方法,调用return1=kettle.boo1pd.read_sql'select*from zoo',connection,然后return2=kettle.boo2pd.read_sql'select*from zoo',connection,将在执行两次数据库查询时产生相同的结果,这将导致程序运行更长时间。
return return1  # instead of or after print(return1)