当前位置: 首页 > 面试题库 >

更改python对象的类(广播)

易和怡
2023-03-14
问题内容

在此python文档页面上,它说:

像其身份一样,对象的类型也是不可更改的。

我尝试这个脚本,

#!python3

class Foo:
  num = 1
  pass

class Bar:
  num = 2
  pass

f1,f2= Foo(), Foo()

f2.__class__ = Bar
print( type(f1), type(f2), f1.num, f2.num )

结果显示:

<class '__main__.Foo'> <class '__main__.Bar'> 1 2

我想我更改了typef2
怎么了,我想念什么?


问题答案:

该页面的脚注说:

[1]在某些情况下,在某些受控条件下可以更改对象的类型。但是,通常这不是一个好主意,因为如果处理不当,它可能会导致某些非常奇怪的行为。

如果您尝试将__class__f2的更改为list

f2.__class__ = list

引发TypeError:

TypeError: __class__ assignment: only for heap types


 类似资料:
  • 问题内容: 我有一个包含JSON对象的文件。已通过以下方式加载: 此时,input_data仅包含一个字符串,现在我将其解析为JSON: data_content具有我需要的字符串的JSON表示形式,但是由于某种原因,在json.loads之后我不清楚,它改变了键的原始顺序,例如,如果我的文件包含以下内容: 在json.loads之后,顺序更改为类似以下内容: 为什么会这样呢?有办法保留订单吗?我

  • 我有以下Java超类,每个属性都有构造函数、getter和setter: 和一个car子类,它扩展了vehicle超类,并具有几个独特的属性: 我创建一个新的vehicle对象链表,并向其中添加一个新的car对象: 我可以用下面这样的函数更改属于vehicle超级类的任何属性: 但是当我试图创建一个类似的函数来更改其中一个子类属性时,我得到了这个错误:“方法setWheels(int)对于类型Ve

  • 我正在java中做一个火花流项目。我试图发送一些消息从火花到阿帕奇Kafka使用Kafka-生产者java api。由于为每个元素创建KafkaProducer实例将非常昂贵,所以我试图使用一个使用apache公共池框架的生产者池。如下面的代码片段所示,我正在创建GenericObjectpool实例,并将其广播如下所示:- KafkaProducerFactory类的代码粘贴在下面:- 但上面的

  • 我有一个UIImageView对象,它可以在屏幕上打开和关闭,只需按一下UIButton,我就可以更改它的布局约束。我使用以下代码成功地为该“运动”设置了动画: 其中addY是屏幕顶部的约束,addingScreen是我的对象。我的问题是,我有一系列对象对addingScreen具有垂直行间距约束,我希望它们一起滑动。发生的情况是,这些对象瞬间移动到它们的最后一帧,而在我在代码中设置的0.5秒内缓

  • 还是由于 JavaScript 的限制,Vue 不能检测对象属性的添加或删除: var vm = new Vue({ data: { a: 1 } }) // `vm.a` 现在是响应式的 vm.b = 2 // `vm.b` 不是响应式的 对于已经创建的实例,Vue 不能动态添加根级别的响应式属性。但是,可以使用Vue.set(object, key, value)方法向嵌

  • 我正在使用Android MVVM架构和LiveData。我有一个这样的物体 我的视图模型是这样的 如何确保用户对象中的某个字段发生更改时,观察员收到通知?顺便说一句,重要的是要将这些数据保存在单独的对象中,而不是在ViewModel中使用字符串等主要值。