gpt4 book ai didi

python - 为什么我不能在 Python 中访问父类(super class)的私有(private)变量?

转载 作者:太空狗 更新时间:2023-10-30 01:16:49 25 4
gpt4 key购买 nike

我知道我应该使用访问方法。我在 datetime 模块中看到类 datetime 继承自 date。

class datetime(date):
<some other code here....>
self = date.__new__(cls, year, month, day)
self._hour = hour
self._minute = minute
self._second = second
self._microsecond = microsecond
self._tzinfo = tzinfo
return self

我还看到 datetime 能够访问 date 的成员,如 __repr__ 所示:

def __repr__(self):
"""Convert to formal string, for repr()."""
L = [self._year, self._month, self._day, # These are never zero
self._hour, self._minute, self._second, self._microsecond]

我尝试子类化 datetime 以向其添加一些信息,然后编写一个类似的 __repr__ 函数:

def __repr__(self):
"""Convert to formal string, for repr()."""
L = [self._year, self._month, self._day, # These are never zero
self._hour, self._minute, self._second, self._microsecond,
self._latitude, self._longitude]

调试器提示 self._year 不存在。 (不过,self.year 有效。)

我知道我应该使用访问功能。我只是想了解为什么 datetime 能够访问 date 的私有(private)变量,但我的子类却不能。

最佳答案

如果您查看 end of datetime.py ,你会看到这个:

try:
from _datetime import *
except ImportError:
pass

除其他外,这会导入先前定义的 python 类的 C 版本,因此将使用这些类,而那些没有您尝试访问的成员。

关于python - 为什么我不能在 Python 中访问父类(super class)的私有(private)变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10675810/

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