gpt4 book ai didi

python - 什么时候可以动态地向对象添加字段?

转载 作者:行者123 更新时间:2023-11-28 18:43:24 37 4
gpt4 key购买 nike

我正在用 python 学习 curses,想给 curses 窗口对象添加一个属性。

我的最小程序是:

import curses
try:
stdscr = curses.initscr()
stdscr.cur_line = 0
finally:
#clean-up so your terminal isn't wrecked by above error
curses.nocbreak()
stdscr.keypad(False)
curses.echo()
curses.endwin()

错误是:

$ python3 tmp
Traceback (most recent call last):
File "tmp", line 4, in <module>
stdscr.cur_line = 0
AttributeError: '_curses.curses window' object has no attribute 'cur_line'

但是,这是可行的:

class Temp:
def __init__(self):
pass
t = Temp()
t.cur_line = 0 #does not fail

我的问题是:动态添加字段到实例什么时候会失败? python 如何区分用户定义类的实例和 curses 库中的类实例?

最佳答案

大多数情况下,发生这种情况是因为您试图将属性添加到用 C 编写的库,而不是纯 python 对象。

>>> import pickle, cPickle
>>> pickle.dump.a=1
>>> cPickle.dump.a=1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'builtin_function_or_method' object has no attribute 'a'

关于python - 什么时候可以动态地向对象添加字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23499588/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com