python如何给函数传递类_如何将类构造函数传递给python函数

此博客介绍了如何在Python中定义一个函数,接受类的实例作为参数,以便根据传入的类创建并操作多个相同类型的对象。通过`bar`函数,你可以实例化不同类的对象,并使用相同的初始化参数。作者强调了动态语言中变量命名的重要性,并给出了示例代码和调用方式.
摘要由CSDN通过智能技术生成

假设我有一个类Foo,我想定义一个接收类构造函数作为参数的函数:

def bar(class_name):

local_class = None

# TODO: if I call bar(Foo()), I want to get local_class = Foo()

我该如何实现这个功能?

解决方法:

以下条形函数将起作用.注意,第一个参数将是一个类本身而不是类的名称,因此“class_name”(暗示它是一个str)具有误导性. args将是一个用于初始化klass对象的args元组,在调用klass时使用* -unpacked.您在稍后的评论中说过,您想要“创建多个独立对象”,所有相同的类并使用相同的args初始化,所以我修改了我的答案以反映:

def bar(klass, *args):

# Now you can create multiple independent objects of type klass,

# all initialized with the same args

obj1 = klass(*args)

obj2 = klass(*args)

# ...

# do whatever you have in mind with the objs

你的“local_class”根本不是一个类,而是一个klass的实例,所以这是一个坏名字;无论如何你想要其中几个.

假设Foo对象初始化为三个int参数,而Baz对象有两个字符串,您可以像这样调用bar:

bar(Foo, 1, 2, 3)

bar(Baz, 'Yo', 'bro')

等等

特别是在像Python这样的动态类型语言中,当变量具有误导性名称时,对代码的推理更加困难.

标签:python,function,constructor,class

来源: https://codeday.me/bug/20190623/1272268.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值