Python & 类 - 我可以在超类中使用将在子类中创建的方法吗?
Python & Classes - Can I use a method in a superclass that is going to be created in a subclass?
希望你一切都好。我需要做一些功课,我想出了一个疑问,我不知道是否可以通过这种方式解决。如果你能帮助我,你介意吗?还是谢谢了。
假设我们有这个:
class human:
def dress(self, weather):
return color(weather)
class girl(human):
def color(self, weather):
if weather == 'rainy':
print('red')
else:
print('blue')
我可以这样做吗?因为乍一看我有一个问题,即人类的 color() 是未定义的(逻辑上)。你可能会问,你为什么会有这样的想法?因为是解决问题的说明。哪个最好解决呢?
再次感谢!
是的,你可以做到。 superclasses 中的方法留给 subclasses 定义的情况并不少见。通常 superclass 会有一个占位符实现,它会抛出一个异常,表明 subclass 需要定义它——然而这并不是工作所必需的。
class human:
def dress(self, weather):
return self.color(weather)
def color(self, weather):
raise NotImplementedError("Subclass needs to define this.")
class girl(human):
def color(self, weather):
if weather == 'rainy':
c = 'red'
else:
c = 'blue'
print(c)
return c
某些基 class 不能直接使用,需要子class 来实现基 class 调用的方法。如果你 subclass 这样的 class 并填写所需方法的实现.. 基础 class 已经定义的方法调用它们将起作用。
例如,假设我们有一个女孩实例。我们希望它能适应天气。即使 subclass 没有定义 dress()
它仍然有那个方法,因为它继承了它。
>>> mary = girl()
>>>
>>> mary.dress("rainy")
red
在运行时,解释器运行 dress()
的代码并在其中看到 color()
。然后它在 girl
上查找该函数并找到它。基 class 是否定义它并不重要。
不,您不能从父 class 调用子 class 方法,除非方法具有相同的名称。
如果您在父 class 中创建相同的方法 "color" 也可以做到这一点。
希望你一切都好。我需要做一些功课,我想出了一个疑问,我不知道是否可以通过这种方式解决。如果你能帮助我,你介意吗?还是谢谢了。
假设我们有这个:
class human:
def dress(self, weather):
return color(weather)
class girl(human):
def color(self, weather):
if weather == 'rainy':
print('red')
else:
print('blue')
我可以这样做吗?因为乍一看我有一个问题,即人类的 color() 是未定义的(逻辑上)。你可能会问,你为什么会有这样的想法?因为是解决问题的说明。哪个最好解决呢?
再次感谢!
是的,你可以做到。 superclasses 中的方法留给 subclasses 定义的情况并不少见。通常 superclass 会有一个占位符实现,它会抛出一个异常,表明 subclass 需要定义它——然而这并不是工作所必需的。
class human:
def dress(self, weather):
return self.color(weather)
def color(self, weather):
raise NotImplementedError("Subclass needs to define this.")
class girl(human):
def color(self, weather):
if weather == 'rainy':
c = 'red'
else:
c = 'blue'
print(c)
return c
某些基 class 不能直接使用,需要子class 来实现基 class 调用的方法。如果你 subclass 这样的 class 并填写所需方法的实现.. 基础 class 已经定义的方法调用它们将起作用。
例如,假设我们有一个女孩实例。我们希望它能适应天气。即使 subclass 没有定义 dress()
它仍然有那个方法,因为它继承了它。
>>> mary = girl()
>>>
>>> mary.dress("rainy")
red
在运行时,解释器运行 dress()
的代码并在其中看到 color()
。然后它在 girl
上查找该函数并找到它。基 class 是否定义它并不重要。
不,您不能从父 class 调用子 class 方法,除非方法具有相同的名称。 如果您在父 class 中创建相同的方法 "color" 也可以做到这一点。