Пример #1
0
    def __init__(self, space, name, superclass, is_singleton=False):
        W_ModuleObject.__init__(self, space, name)
        self.superclass = superclass
        self.is_singleton = is_singleton

        if self.superclass is not None:
            self.superclass.inherited(space, self)
            # During bootstrap, we cannot create singleton classes, yet
            if not self.is_singleton and not space.bootstrap:
                self.getsingletonclass(space)
Пример #2
0
    def __init__(self, space, name, superclass, is_singleton=False):
        W_ModuleObject.__init__(self, space, name)
        self.superclass = superclass
        self.is_singleton = is_singleton

        if self.superclass is not None:
            self.superclass.inherited(space, self)
            # During bootstrap, we cannot create singleton classes, yet
            if not self.is_singleton and not space.bootstrap:
                self.getsingletonclass(space)
Пример #3
0
 def ancestors(self, include_singleton=True, include_self=True):
     assert include_self
     ary = W_ModuleObject.ancestors(
         self, include_singleton,
         not (self.is_singleton and not include_singleton))
     if self.superclass is not None:
         ary += self.superclass.ancestors(include_singleton)
     return ary
Пример #4
0
 def ancestors(self, include_singleton=True, include_self=True):
     assert include_self
     ary = W_ModuleObject.ancestors(self,
         include_singleton, not (self.is_singleton and not include_singleton)
     )
     if self.superclass is not None:
         ary += self.superclass.ancestors(include_singleton)
     return ary
Пример #5
0
 def methods(self, space, inherit=True):
     methods = {}
     for name in W_ModuleObject.methods(self, space, inherit):
         methods[name] = None
     if inherit and self.superclass is not None:
         for name in self.superclass.methods(space, inherit):
             method = self._find_method_pure(space, name, self.version)
             if method is None or not isinstance(method, UndefMethod):
                 methods[name] = None
     return methods.keys()
Пример #6
0
 def methods(self, space, inherit=True):
     methods = {}
     for name in W_ModuleObject.methods(self, space, inherit):
         methods[name] = None
     if inherit and self.superclass is not None:
         for name in self.superclass.methods(space, inherit):
             method = self._find_method_pure(space, name, self.version)
             if method is None or not isinstance(method, UndefMethod):
                 methods[name] = None
     return methods.keys()
Пример #7
0
    def inherited_constants(self, space):
        consts = {}
        for const in W_ModuleObject.local_constants(self, space):
            consts[const] = None
        w_cls = self.superclass
        while w_cls is not None:
            for const in w_cls.local_constants(space):
                consts[const] = None
            w_cls = w_cls.superclass

        return consts.keys()
Пример #8
0
    def inherited_constants(self, space):
        consts = {}
        for const in W_ModuleObject.local_constants(self, space):
            consts[const] = None
        w_cls = self.superclass
        while w_cls is not None:
            for const in w_cls.local_constants(space):
                consts[const] = None
            w_cls = w_cls.superclass

        return consts.keys()
Пример #9
0
 def newmodule(self, name, w_scope=None):
     complete_name = self.buildname(name, w_scope)
     return W_ModuleObject(self, complete_name)
Пример #10
0
 def find_method_super(self, space, name):
     method = W_ModuleObject.find_method_super(self, space, name)
     if method is None and self.superclass is not None:
         method = self.superclass.find_method(space, name)
     return method
Пример #11
0
 def find_const(self, space, name):
     w_res = W_ModuleObject.find_included_const(self, space, name)
     if w_res is None and self.superclass is not None:
         w_res = self.superclass.find_const(space, name)
     return w_res
Пример #12
0
 def method_undefined(self, space, w_name):
     if self.is_singleton:
         space.send(self.attached, "singleton_method_undefined", [w_name])
     else:
         W_ModuleObject.method_undefined(self, space, w_name)
Пример #13
0
 def find_method_super(self, space, name):
     method = W_ModuleObject.find_method_super(self, space, name)
     if method is None and self.superclass is not None:
         method = self.superclass.find_method(space, name)
     return method
Пример #14
0
 def find_const(self, space, name):
     w_res = W_ModuleObject.find_included_const(self, space, name)
     if w_res is None and self.superclass is not None:
         w_res = self.superclass.find_const(space, name)
     return w_res
Пример #15
0
 def method_undefined(self, space, w_name):
     if self.is_singleton:
         space.send(self.attached, "singleton_method_undefined", [w_name])
     else:
         W_ModuleObject.method_undefined(self, space, w_name)