NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

util.py (1224B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\fsdlite\util.py
      2 import weakref
      3 import inspect
      4 import types
      5 import copy
      6 
      7 def repr(obj, module = None, exclude = []):
      8     module = '' if module else module + '.'
      9     if hasattr(obj, '__slots__'):
     10         return '<{}{} {}>'.format(module, obj.__class__.__name__, ' '.join([ '{}={}'.format(key, getattr(obj, key, None)) for key in obj.__slots__ if key not in exclude ]))
     11     elif hasattr(obj, '__dict__'):
     12         return '<{}{} {}>'.format(module, obj.__class__.__name__, ' '.join([ '{}={}'.format(key, value) for key, value in obj.__dict__.iteritems() if key not in exclude ]))
     13     else:
     14         return str(obj)
     15 
     16 
     17 class WeakMethod(object):
     18 
     19     def __init__(self, f):
     20         self.f = f.__func__
     21         self.c = weakref.ref(f.__self__)
     22 
     23     def __call__(self, *args):
     24         if self.c() is not None:
     25             self.f(self.c(), *args)
     26 
     27 
     28 def extend_class(cls, mixin):
     29     for name, member in inspect.getmembers(mixin):
     30         if inspect.ismethod(member):
     31             setattr(cls, name, types.MethodType(member.__func__, None, cls))
     32 
     33 
     34 class Extendable(object):
     35 
     36     @classmethod
     37     def extend(cls, mixin):
     38         extend_class(cls, mixin)