首页 > 解决方案 > 覆盖父类中的函数

问题描述

我只是在看这个例子,其中有代码:

class Parent(object):
     def __init__(self):
         self.value = 4
     def get_value(self):
         return self.value
 
class Child(Parent):
     def get_value(self):
         return self.value + 1

当函数get_value在 Child 类中运行时,它是self.value通过检查Class Parentself.value中的函数中的值是什么来确定值,还是通过检查类 Parent 中的函数中的值是什么来确定值?initself.valueget_value

更新

class Parent(object):
     def __init__(self):
         self.value = 4
     def get_value(self):
         self.value = self.value + 7 
 
class Child(Parent):
     def get_value(self):
         return self.value + 1

标签: pythonpython-3.xdjangoclass

解决方案


当您self.valuechild类中访问时,它将获得该类中的当前self.value状态Parent。因此,如果不更改,它将返回__init__加 1 的值。

这个例子稍微简化了一点,但是如果你要给setter它添加一个方法,最好理解它访问的是什么值。

就像是:

class Parent(object):
    def __init__(self):
        self.value = 4
    def get_value(self):
        return self.value

class Child(Parent):
    def set_value(self, x):
        self.value = x
    def get_value(self):
        return self.value + 1

c = Child()
print(c.get_value()) # 5
c.set_value(3)
print(c.get_value()) # 4

推荐阅读