gpt4 book ai didi

Python实例属性从具有相同名称的类属性中获取初始值?

转载 作者:太空宇宙 更新时间:2023-11-04 09:11:22 25 4
gpt4 key购买 nike

class bambino(object):
counter = 7
def __init__(self):
print("bambino.counter is self.counter ?", bambino.counter is self.counter)
self.counter += 1
print("bambino.counter is self.counter ?", bambino.counter is self.counter)

bambi1 = bambino()
print ("bambi1.counter:", bambi1.counter)
print ("bambino.counter:", bambino.counter)

打印:

bambino.counter is self.counter ? True
bambino.counter is self.counter ? False
bambi1.counter: 8
bambino.counter: 7

我明白通过执行 self.counter += 1 counter 成为实例的属性而不是类的属性。

但是为什么 bambi1.counterbambino.counter 中获取它的初始值?

最佳答案

如果在对象中找不到某个属性,则会在层次结构中查找更高的属性,首先是在其类中,然后,如果找不到,则在父类(super class)中查找。

self.counter += 1 等价于 self.counter = self.counter + 1。因此,要分配 bambi1.counter,Python 首先需要获取 bambi1.counter 的值。由于 bambi1 最初没有 counter,python 找不到它,必须在它的类中查找它。

PS:请将您的类(class)名称大写。

关于Python实例属性从具有相同名称的类属性中获取初始值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14661908/

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