请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

base.py 中 __getitem__ 方法的继承

__getitem__是flask的内置函数,我们自己定义的方法如果是以 __ 开头的话,可以简单的理解为私有方法,也就是说不可以被外界直接通过模型对象调用。在 base.py 中定义的 def getitem(self, item) 方法,是私有的吗,会被子类继承吗,python 中的这种继承应该怎么理解啊。

另外还有一个问题,既然像下面定义以后就可以通过 [] 方式访问对象的属性,为什么 python 不在python的基类中添加这个实现,而需要我们自己去实现呢。因为这个也是一个很通用的获取属性值的方式。

def __getitem__(self, item):
    return getattr(self, item)

正在回答 回答被采纳积分+3

1回答

7七月 2019-03-28 00:02:01

python的很对集合类里都有这个模式方法。这相当于是覆盖和重写。用来实现自己的业务逻辑。 

方法都是可以被继承的呀,python没有private的概念。。。。 java里private不能被继承,protected可以。

0 回复 有任何疑惑可以回复我~
  • 提问者 abulaka #1
    关于第二个问题也麻烦解答一下呗。
    为什么 python 不在python的基类中添加 `def __getitem__(self, item):` 实现,而需要我们自己去实现呢。因为这个也是一个很通用的获取对象属性值的方式。
    回复 有任何疑惑可以回复我~ 2019-03-28 08:55:04
  • 7七月 回复 提问者 abulaka #2
    已经回答了吧?第一句话就是的啊。集合类里都有这个方法,你定义的是覆盖。
    回复 有任何疑惑可以回复我~ 2019-03-28 11:18:54
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信