Eya*_*yal 5 python subclass private-members python-3.x
我知道我应该使用访问方法.我在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
Run Code Online (Sandbox Code Playgroud)
我还看到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]
Run Code Online (Sandbox Code Playgroud)
我试图将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]
Run Code Online (Sandbox Code Playgroud)
调试器抱怨self._year不存在.(self.year然而,工作.)
我知道我应该使用访问功能.我只想了解为什么datetime能够访问私有变量date但我的子类不能.
如果你看一下 的结尾,datetime.py你会看到这个:
try:
from _datetime import *
except ImportError:
pass
Run Code Online (Sandbox Code Playgroud)
除其他外,这会导入先前定义的 python 类的 C 版本,因此将使用这些类,并且这些类没有您要访问的成员。
| 归档时间: |
|
| 查看次数: |
638 次 |
| 最近记录: |