我在下面有一个基本的简单例子来展示我正在尝试做的事情。
这是我正在使用但无法更改的文件(它是已安装的库):
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中的面向对象技术,我仍然是一个新手,并且在不知道究竟要搜索什么的情况下无法搜索这种特定情况。
谢谢!
答案 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