Usefulness of def __init__(self)?

后端 未结 3 443
夕颜
夕颜 2021-02-02 06:51

I am fairly new to python, and noticed these posts: Python __init__ and self what do they do? and Python Classes without using def __init__(self)

After playing around w

3条回答
  •  终归单人心
    2021-02-02 07:52

    In the first exemple you have the variable of the instance of the class. This variable is only accessible through an instance (self required).

    class A():
        def __init__(self):
            self.x = 'hello'
    
    print A.x -> AttributeError
    print A().x -> 'hello'
    

    In the second exemple you have a static variable. You can access to this variable thanks to the name of the class A

    class A():
      x = 'hello'
    
    print A.x -> 'hello'
    print A().x -> 'hello'
    

    In fact you can have a static variable and an instance variable with the same name:

    class A():
        x = 'hello'
        def __init__(self):
            self.x = 'world'
    
    print A.x -> hello
    print A().x -> world
    

    The static value is shared between all the instances

    class A():
        x = 'hello'
    
        @staticmethod
        def talk():
            print A.x
    
    a = A()
    print a.talk() -> hello
    
    A.x = 'world'
    print a.talk() -> world
    

    You have a good article here: http://linuxwell.com/2011/07/21/static-variables-and-methods-in-python/

提交回复
热议问题