让我们用主脚本:
#!/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)
等等 - 但不成功。
答案 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
类中因为继承而定义。