希望这是非常明显的:的Python:从派生类中获取基类值
class myParent():
def __init__(self):
self.parentNumber = 5
class Child(myParent):
def __init__(self):
self.childNumber = 4
def multiplyNumbers(self):
print myParent.parentNumber * self.childNumber
p = Child()
p.multiplyNumbers()
我想单独设置parentNumber,进而达到通过该子类号,在这种情况下使用它的一些乘法。
我是OOP领域的新手,所以任何关于继承的一般指针都是受欢迎的!
更多信息: 我设计了基于VFX-项目的项目管理解决方案,并正在与类和继承玩,看看他们如何能帮助我最。
现在,我已经得到了顶级课程,项目和一个派生类,Shot。 Shot具有一个self.length变量和特定镜头的长度。它还有一个getLengthInSeconds()方法,它使用self.length和Project.fps来确定长度(以秒为单位)。 Project有一个setFps()方法,其中在创建类的实例之后设置fps。
我很习惯以self为前缀的变量。并没有用更多的“全局”变量在没有自我的情况下尝试过很多类。 。如果我把所有东西都做成全球化的东西,那么我就可以毫无麻烦地使用Project.fps,但是我在我的neckhair中收到了一个“糟糕的编程习惯”警告。也许有更好,更整洁的方式?
编辑:
一些阅读后,超()似乎有点危险,有点比我更需要我的想法。我主要有单继承类,甚至不知道如何使用钻石层次结构。是否有更安全的方式来访问超类变量和方法,不包括super()?
编辑:
还好吧,看看这是有道理的,或者如果我想这都是错误的。
我正在寻找类和继承作为组和孩子。一个孩子知道它是父母,所有的价值。一个孩子到另一个父母知道父母的价值观。我试图完成的是将所有镜头创建为项目的一部分。现在,我从Project()类中创建Shot()实例,将实例添加到项目()实例中保留的镜头列表中。
即
class myParent(object):
def __init__(self):
self.parent_id = ''
self.children = []
def createChild(self, name):
self.children.append(myChild(name))
def getChildren(self):
return self.children
def setParentId(self, id):
self.parentId = id
class myChild(myParent):
def __init__(self, id):
super(myChild, self).__init__()
self.id = id
def getParentId(self):
return self.parent_id
p = myParent()
p.setParentId('parent01')
p.createChild('child01')
print p.getChildren()[0].getParentId()
我有点看这里的逻辑错误的步骤,但它周围没有真正的方法.. 好像每个孩子得到父母的新实例这种方式,在parent_id始终是一个空字符串。
你需要调用父类的构造。 – 2011-02-08 16:32:31