变量从paren继承到类

2024-06-28 20:06:34 发布

您现在位置:Python中文网/ 问答频道 /正文

让我们看一下主脚本:

#!/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'

如何从类Second访问类First中名为rep1的变量

我的意思是-比如:

先从cl1导入

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版

另外,我试着用super(Second, self)等来“玩”,但没有成功


Tags: fromimportselfdefoneclassfirstprint
2条回答

你不需要做什么特别的事。只要从Second的方法中访问self.rep1,就会得到值。当然,这个值仍然需要在那个特定的对象中设置,所以如果您有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()

所发生的事情是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类中定义的一样

相关问题 更多 >