有没有办法将一个类作为一个参数传递给我曾经嘲笑的函数?
例如:
如果我有课:
class a:
def __init__(self,x,y,z):
self._x = x
self,_y = y
self,_z = z
和一些功能:
def function(x,y,z):
print(x,y,z)
有没有办法将对象作为参数传递给函数?
tmp = a(1,2,3)
function(tmp)
编辑:
我会支持我的问题:
如果我不想直接访问对象变量,而是通过a.getX或a.getY等函数访问。
是否仍然可以将类传递给cuntion并且whiting函数预先形成a.getX和a.getY函数?
def function(a):
print(a.getX, a.getY)
答案 0 :(得分:2)
如果您的函数有三个参数x, y, z
,并且您希望这些参数是类实例的相应x, y, z
值,则可以将这些参数显式传递给函数...
tmp = A(1, 2, 3)
func(tmp.x, tmp.y, tmp.z)
...或者您可以让您的类实现__iter__
方法并将其作为func(*tmp)
传递,以自动将x, y, z
属性解压缩为三个参数:
class A:
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z
def __iter__(self):
return iter([self.x, self.y, self.z])
def func(x, y, z):
print(x, y, z)
func(*tmp)
后者当然只有在__iter__
方法以与函数所期望的顺序相同的顺序返回属性时才有效。
答案 1 :(得分:1)
您可以在所需变量上解压缩__dict__
,但名称必须相同:
class A:
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z
def function(x, y, z):
print(x, y, z)
tmp = a(1, 2, 3)
func(**tmp.__dict__)
#(1,2,3)
答案 2 :(得分:0)
Python中的所有内容都是一个对象。
目前,function
有三个参数,但没有任何东西阻止类实例成为其中一个参数
也许你正在寻找这个
def function(foo):
print(foo._x, foo._y, foo._z)
tmp = a(1,2,3)
function(tmp)
如果您的代码有错误,请检查self,_y
的语法并替换逗号
答案 3 :(得分:0)
有没有办法将对象作为参数传递给函数?
是的,如果你定义你的函数来接收一个参数:
def f(some_a):
print(some_a)