Python函数默认参数如果是可变类型,则多次调用都是同一个对象

def test_fun(num, re_dict={}):
    print(re_dict)
    return re_dict

adict=test_fun(1)
adict.update({'a':1})
test_fun(2)

输出:
{}
{‘a’: 1}

如果没有赋值操作,那么不管调用多少次test_fun函数,默认参数都是唯一的对象,可能会被其它调用无意修改。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用以下两种方法: 1. 将一个对象作为参数传递给另一个对象的方法: ```python class Obj1: def obj1_func(self): print("This is the function of object 1.") class Obj2: def obj2_func(self, obj): obj.obj1_func() obj1 = Obj1() obj2 = Obj2() obj2.obj2_func(obj1) ``` 2. 通过类名直接调用另一个类的方法: ```python class Obj1: @staticmethod def obj1_func(): print("This is the function of object 1.") class Obj2: @staticmethod def obj2_func(): Obj1.obj1_func() obj2 = Obj2() obj2.obj2_func() ``` 注意:如果要调用的方法是一个静态方法,则可以直接通过类名调用。如果是一个实例方法,则需要通过一个对象调用该方法。 ### 回答2: 在Python中,一个对象调用另一个对象里的方法可以通过访问对象属性来实现。例如,假设有两个对象obj1和obj2,其中obj2具有一个名为method的方法,我们可以通过以下步骤调用obj2中的方法: 1. 首先,确保obj1中拥有一个指向obj2的引用。这可以通过在obj1的初始化过程中将obj2传递给相应的属性或变量来完成。 2. 然后,我们可以利用obj1中对obj2的引用来访问obj2的方法。通过使用点号“.”来访问属性,我们可以在obj1中调用obj2的方法。 例如,如果我们有一个类名为Person的对象obj1,并且在其中有一个属性名为friend的对象引用,可以编写以下代码来实现调用obj2中方法的过程: ``` class Person: def __init__(self, friend): self.friend = friend def call_friend_method(self): self.friend.method() ``` 在上述代码中,我们的Person类具有一个名为call_friend_method的方法。该方法通过调用self.friend.method()来调用obj2中的method方法。这里,self.friend代表obj1中对obj2的引用。 通过这种方式,我们可以在Python中实现一个对象调用另一个对象里的方法。这样的机制使得对象之间的交互和协作变得更加灵活和方便。 ### 回答3: 在Python中,一个对象调用另一个对象里的方法可以通过以下几种方式实现: 1. 创建对象实例:首先,我们需要创建两个对象的实例。我们可以使用类定义创建对象实例,例如,使用类A和类B分别创建a和b两个对象实例。 2. 对象之间的关联:在这种情况下,对象a需要调用对象b的方法,所以对象a需要与对象b建立关联。可以通过对象属性将对象b赋值给对象a,例如,将对象b赋值给对象a的某个属性。 3. 调用方法:一旦对象a与对象b建立了关联,对象a就可以使用点号操作符(.)来调用对象b的方法,例如,a.b_method()。 总结起来,对象a通过与对象b建立关联,并使用点号操作符来调用对象b的方法。这样就实现了一个对象调用另一个对象里的方法。使用Python这种面向对象的语言,可以方便地实现对象之间的交互和方法调用,提高代码的可读性和灵活性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值