我能给它传递一个类变量吗';在python中初始化类时,调用其他变量
我有一个名为我能给它传递一个类变量吗';在python中初始化类时,调用其他变量,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我有一个名为BaseClass的类,如下所示 class BaseClass(object): def __init__(self, context): self.context = context 我还有一些其他类是从基类派生的,比如 BaseSubClass(object): def __init__(self, context=None): self.context = context def method1(self):
BaseClass
的类,如下所示
class BaseClass(object):
def __init__(self, context):
self.context = context
我还有一些其他类是从基类派生的,比如
BaseSubClass(object):
def __init__(self, context=None):
self.context = context
def method1(self):
""""Do stuff here """
def method2(self):
""""Do stuff here """
def method3(self):
""""Do stuff here """
然后我有了类,它们是BaseSubClass的子类
class Class1(BaseSubClass):
def get_something(self):
"""Perform some actions here on the basis of the context passed in self"""
context = self.context
return 'abcd'
@property
def data(self):
return self.get_something()
class Class2(BaseSubClass):
def get_something(self):
"""Perform some actions here on the basis of the context passed in self"""
context = self.context
return 'abcdewewew'
@property
def data(self):
return self.get_something()
class Class3(BaseSubClass):
def get_something(self):
"""Perform some actions here on the basis of the context passed in self"""
context = self.context
return 1221212
@property
def data(self):
return self.get_something()
最后我要做的是
class MainClass(BaseClass):
c1 = Class1()
c2 = Class2()
c3 = Class3()
我想做的是。当我创建BaseClass
对象时,我希望以某种方式将context
变量传递给它的属性类,也就是c1、c2、c3
,这样当我访问该实例的属性时,我将在第一时间获得计算出的数据。像
obj = MainClass(context)
obj.c1.data # at this time it should return the actual data which will be depend on the context variable.
如果我将属性用作proerty,这是可能的。像
@property
def c1(self):
return Class1(context=self.context).data
@property
def c2(self):
return Class2(context=self.context).data
但是我想知道,如果我能将wrapper类变量传递给我在这个wrapper类中实例化的类 这样做行不通。如果实例化基类,则只能访问基类中可用的方法。您必须用数据实例化子类。但另一方面。整个结构看起来很可怕。我几乎可以肯定,有更好的方法来实现您所需要的一切……听起来您可能想重新思考您的设计。实际上,我已经完成了这项任务。在我需要对象上下文的地方,我已将上下文分配给对象
obj.context=self.context
,然后调用方法obj.method。我只是想知道有没有办法,但这样不行。如果实例化基类,则只能访问基类中可用的方法。您必须用数据实例化子类。但另一方面。整个结构看起来很可怕。我几乎可以肯定,有更好的方法来实现您所需要的一切……听起来您可能想重新思考您的设计。实际上,我已经完成了这项任务。在我需要对象上下文的地方,我已将上下文分配给对象obj.context=self.context
,然后调用方法obj.method。我只是想看看有没有办法。