Reputation: 15099
I want to specify variable once by making instance Outer(variable), than this variable use in all static classes, how should I do that? Is there any other solution than use not static methods and pass Outer into each inner class?
class Outer():
def __init__(self, variable):
self.variable= variable
class Inner1():
@staticmethod
def work1():
**print Outer.variable**
class Inner2():
@staticmethod
def work2():
**print Outer.variable**
Upvotes: 0
Views: 1718
Reputation: 780
If you really want such thing, metaclass may help a little, for example:
from types import ClassType
class OuterMeta(type):
def __new__(mcls, name, base, attr):
ret = type.__new__(mcls, name, base, attr)
for k, v in attr.iteritems():
if isinstance(v, (ClassType, type)):
v.Outer = ret
return ret
class Outer(object):
__metaclass__ = OuterMeta
var = 'abc'
class Inner:
def work(self):
print self.Outer.var
@classmethod
def work2(cls):
print cls.Outer.var
then
>>> Outer.Inner.work2()
abc
Upvotes: 2
Reputation: 799230
No. Inner-class methods have no way of accessing instances of the outer class.
Upvotes: 1