变量从父级继承到类

时间:2015-02-20 16:31:09

标签: python python-2.7

让我们用主脚本:

#!/usr/bin/env python

import cl1
import cl2

A = cl1.First()
A.one()

B = cl2.Second()
B.two()

print('\nRep from First class: %sRep from Second class: %s\n' % (A.rep1, B.rep2))

First类文件是:

class First:

    def one(self):

        self.rep1 = 'Rep1.\n'

Second类文件包含:

from cl1 import First

class Second(First):

    def two(self):
        self.rep2 = 'Rep2'

如何从班级rep1访问班级First中名为Second的变量?

我的意思是 - 像:

来自cl1 import First

class Second(First):

    def two(self):
        self.rep2 = 'Rep2'
        self.l = First()
        self.l.one()
        print('From First: %s' % self.l.rep1)

这会有效 - 但我只是再次创建First类对象,因此 - 这不是继承:

$ ./main.py
From First: Rep1.


Rep from First class: Rep1.
Rep from Second class: Rep2

我想使用类似的东西:

from cl1 import First

class Second(First):

    def two(self):
        self.rep2 = 'Rep2'
        self.rep1 = First.rep1
        print('From Second: %sFrom First: %s' % (self.rep2, self.rep1)

Python 2.7

P.S。我试过"玩"与super(Second, self)等等 - 但不成功。

2 个答案:

答案 0 :(得分:1)

你不需要做任何特别的事情。只需从self.rep1方法中访问Second即可获得价值。当然,仍然需要在该特定对象中设置该值,因此如果您有ob = Second(),则首先必须致电ob.one()

您可以尝试以下方式:

def Second(First):
    def two(self):
        self.one()
        self.rep2 = 'Rep2'
        print(self.rep1, self.rep2) # this will access the value set by one()

答案 1 :(得分:1)

发生的情况是rep1至少在您{方法one()方法之前不会存在。 你可以这样做:

class First:
    def __init__(self):
        self.one()
    def one(self):
        self.rep1 = 'Rep1.\n'

class Second(First):
    def two(self):
        self.rep2 = 'Rep2'
        self.rep1 = self.rep1
        print('From Second: %sFrom First: %s' % (self.rep2, self.rep1))

您可以直接访问rep1,就好像它是Second中因为继承而定义