Python 방법(一)-류의 내부 방법

2202 단어

클래스(Class) 및 인스턴스(Instance)

 
 “ ”
 , 
 , , ;

super

class OldDog():  
   def __init__(self):  
       print('I am an old dog !')
       self.hungry = True  

   def eat(self):  
       if self.hungry:  
           print('I eat it !')
           self.hungry = False  
       else:  
           print('No thanks!')

class NewDog(OldDog):  
   def __init__(self):  
       super().__init__()  
       print('I am a new dog!')

olddog = OldDog()
olddog.eat()
olddog.eat()
newdog = NewDog()
newdog.eat()
newdog.eat()
 , 。 __init__ , __init__, __init__ , __init__     

repr

  • 작용
  •  
  • code
  • class MyClass() :
        def __str__(self) :
            return " MyClass "
        def __repr__(self) :
            return " print "
     
    a=MyClass()
  • result
  • >>> print(a)
     MyClass 
    >>> a
     print 
  • 링크
  •  flask json 
    https://www.v2ex.com/t/195379

    new__、__init__、__call

    __new__:  , , cls。( , self, , self)
    __init__ :  ,  , self。
    __call__ :  call, , 
     , 。 __new__, __init__。
  • new
  • class Bar(object): 
      pass
      
    class Foo(object): 
      def __new__(cls, *args, **kwargs): 
        return Bar() 
      
    print Foo()
     Bar 
  • init
  • class Person(object):
      """Silly Person"""
     
      def __init__(self, name, age):
        self.name = name
        self.age = age
     
      def __str__(self):
        return '' % (self.name, self.age)
     
    if __name__ == '__main__':
      piglei = Person('piglei', 24)
      print piglei
     __init__ 。 __init__   。
      Persion(name, age)  ,    __new__  。
  • call
  •  __call__(slef, [,*args [,**kwargs]]) , x , , x(arg1, arg2...)  x.__call__(self, arg1, arg2) 。 (functor)  (proxy).
    class Foo(object): 
      def __call__(self): 
        pass
      
    f = Foo()# Foo call 
    f()# f call

    좋은 웹페이지 즐겨찾기