إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

inheriting python types

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • inheriting python types

    Python ببتميز بمرونة كبيرة من ناحية ال OOP ولكن كان هناك دائما الفرق بين ال Class وال Type وكان فى Limits فى التعامل ولكن الكلام دا اصبح من الماضى lol

    تقدر تورث type ل Class بإسلوب بسيط للغاية كالتالى
    كود:
    class eString(str):
        '''eString(str) -> Inherits str [type]'''
        def __init__(self, string=None):
            str.__init__(self)
    كدا إنت عملت class بإسم eString يورث كل مابداخل ال str type
    لاحظ فى ال Constructor بتعمل Call لل Super constructor ! ، تقدر تضيف Methods/attributes براحتك بالطبع زيها زى اى class

    والتالى هو Class عملته لمزيد من التسهيل فى التعامل مع ال Strings من خلال ال python

    It supports
    [*]All of str functions
    [*]implode function as wrapper to ( joiner.join(sequence) )
    [*]inserting
    [*]setting slices
    [*]shuffling
    [*]strcmp (cmpTo)
    [*]strncmp (nCmpTo)[*]md5
    [*]sha1 #You may add more!
    [*]substring method as wrapper to s[from:to]
    [*]ROT13 Encoding
    [*]ROT13 Decoding
    [*]Reversing
    [*]getType

    كود:
    #!bin/python
    
    ########################################################
    # Written by : Ahmed Youssef
    # Purpose : Making strings-handling more easeier
    # Date : 9-3-2007
    # Site : Programming-Fr34ks.net
    ########################################################
    
    def implode(joiner, listOfWords):
        '''joiner.join(lisOfWords)'''
        return joiner.join(listOfWords)        
    
    class eString(str):
        '''eString(str) -> Inherits str [type]'''
        def __init__(self, string=None):
            str.__init__(self)
    
        def hasChar(self, char):
            if char in self:
                return True
            return False
    
        def getType(self):
            return type(self)
    
        def insert(self, value, index):
            '''An easy way to insert a char/string into a string'''
            _first=self[0:index]
            _last=self[index:]
            self=eString(_first+value+_last)
            return self
        
        def reverse(self):
            '''String[::-1]'''
            return self[::-1]
    
    
        def shuffle(self):
            '''Shuffling letters'''
            import random as rnd
            tmp=list(self)
            rnd.shuffle(tmp)
            return eString(''.join(tmp))
        
        def length(self):
            '''len(eString_Object)'''    
            return len(self)
    
        def md5(self):
            '''MD5 hash'''
            try:
                import md5
                tmp=md5.new(self).hexdigest()
                return tmp
            except:
               ImportError, "Error importing md5 module..."
    
    
        def sha1(self):
            '''sha1 hash'''
            try:
                import hashlib
                tmp=hashlib.sha1(self).hexdigest()
                return tmp
            except:
                ImportError, "Error importing hashlib module..."
    
        def cmpTo(self, other):
            '''Compares eString with another object'''
            if self==eString(other):
                return 1
            else:
                return -1
    
        def nCmpTo(self, other, _from, _to):
            if self[_from:_to] == other[_from:_to]:
                return 1
            else:
                return -1
        def substring(self, _from, _to):
            '''Same as string[_from:_to]'''
            return self[_from:_to]
       
        def encodeRot13(self):
            '''Applies ROT13 algorithm on eString Object'''
            originalChars=list('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,! 0123456789')
            convChars=list('NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm,! 0123456789')
            rotList=[]
            
            for char in self:
               if char in originalChars:
                   rotList.append(convChars[originalChars.index(char)])
                   
            rotString=''.join(rotList)
            return eString(rotString)
       
    
        
        def decodeRot13(self):
            '''Decode ROT13 string'''
            originalChars=list('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,! 0123456789')
            convChars=list('NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm,! 0123456789')
    
            restoredList=[]
            for char in self:
              if char in convChars:
                 restoredList.append(originalChars[convChars.index(char)])
                 
            restoredString=''.join(restoredList)
            return eString(restoredString)
    
        def __eq__(other, self):
            other = eString(self)
    
        def setslice(self, _from, _to, value):
            '''Simple way to set a slice'''
            _first=self[:_from]
            _last=self[_to:]
            self=eString(_first+value+_last)
            return self
    
        #-You may add more functions to fit your needs.
            
    
    
    if __name__=="__main__":
        s=eString("Hello, World!")
        print "The string is : [%s]"%s
        print "Suffled string : [%s]"%(s.shuffle())
        print "%s[%d:%d] is : [%s]"%(s, 0, 4, s.substring(0, 4))
        print "md5 of [%s] is : [%s] "%(s, s.md5())
        print "sha1 of [%s] is : [%s]"%(s, s.sha1())
        _ins=s.insert('CRUEL ', 7)
        print _ins
        c=s.setslice(0, 5, "CRUEL")
        print c
    Programming-Fr34ks[dot]NET
    Ma Weblog
    ابدأ بتعلم Python | Ruby
    كتاب البايثون متوافر الآن
    لا اتواجد بهذا المنتدى ... للإتصال

  • #2
    مقـال جميـل يا ابو حميد وموفق دائمـا

    تعليق

    يعمل...
    X