如何在继承父类时更改不在父类中的变量

时间:2013-08-08 23:11:07

标签: python oop

我在下面有一个基本的简单例子来展示我正在尝试做的事情。

这是我正在使用但无法更改的文件(它是已安装的库):

treats = 5

class Pet(object):
    def eat(self):
        # Uses the variable 'treats' in this method

这是我正在处理的文件:

from other_file import Pet

class Dog(Pet):
    # Change the value of 'treats' here

我正在尝试更改treats方法的子类中的变量eat(),而不必覆盖该方法。

对于python中的面向对象技术,我仍然是一个新手,并且在不知道究竟要搜索什么的情况下无法搜索这种特定情况。

谢谢!

2 个答案:

答案 0 :(得分:3)

正如@adamr在评论中指出的那样,你可以这样做:

import other_file
other_file.treats = 12

不幸的是,这会更改treats的所有实例的Pet的值。如果这对您不起作用,并且您无法更改other_file,我认为您最好的选择是继承Pet并覆盖eat使用例如self.treats

答案 1 :(得分:0)

您没有将其定义为类属性。

class Pet(object):
  def __init__(self, treats):
    self.treats = treats

  def eat(self):
    #

class Dog(Pet):
    def __init__(self):
        super(Dog, self).__init__()
        print self.treats