gpt4 book ai didi

python - 在Python中,如果实例数据属性与类数据属性具有相同的名称,那么我们可以访问这样的对象吗?

转载 作者:太空宇宙 更新时间:2023-11-03 17:43:34 25 4
gpt4 key购买 nike

我在 python 中有以下代码

class C :
attr = 'class attr'
def f1(self) :
attr = '10' # local scope
self.attr = 'obj attr'

print C.attr
obj = C()

obj.f1()
print C.attr
print obj.attr, obj.__class__.__dict__['attr']

因此,我可以拥有一个与类属性同名的实例属性,并且访问此类属性通常会访问实例属性。

我刚刚开始学习python,所以请告诉我我的这个理解是否到位。我想知道,如果我必须访问这样的类属性,那么除了我在代码中所做的之外,是否还有其他方法可以做到这一点。

最佳答案

是的,你理解正确。

Python 首先在实例中查找属性,如果在实例中没有找到,则在类(和基类...)中查找。例如考虑:

class Foo:
x = 42

f = Foo()
g = Foo()

g.x = 99

print(f.x, g.x)

将显示 f 正在访问 42,而 g 正在访问 99

要访问类属性,即使存在同名的实例属性,您也可以使用其中之一

  • Foo.x
  • getattr(Foo, 'x')
  • Foo.__dict__['x']

因为在 Python 中类也是常规对象实例

关于python - 在Python中,如果实例数据属性与类数据属性具有相同的名称,那么我们可以访问这样的对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30137530/

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