• python相关知识点2(各种内置方法)


    一、__doc__

    """This is the module docstring"""
    class TestDoc:
        """类测试"""
    
        def demo(self):
            """方法注释"""
            pass
    
    if __name__ == '__main__':
        print(__doc__)
        print(TestDoc().__doc__)
        print(TestDoc().demo.__doc__)
        print(TestDoc().__class__.__name__)    #类名获取,方法名也可以用 方法名.__name__  方式拿到名字
    

    二、__name__

    def test_123():
        if __name__ == '__main__':
            print("自己被执行")
        else:
            print("被别人执行")
    
    test_123()
    #执行结果是:自己被执行
    
    from test import test_123
    test_123()
    #执行结果是:被别人执行
    #          被别人执行
    三、__dict__
    class A(object):
        """
        Class A.
        """
    
        a = 0
        b = 1
    
        def __init__(self):
            self.a = 2
            self.b = 3
    
        def test(self):
            print( 'a normal func.')
    
        @staticmethod
        def static_test(self):
            print( 'a static func.')
    
        @classmethod
        def class_test(self):
            print( 'a calss func.')
    
    
    
    obj = A()
    print (obj.__dict__)
    #{'a': 2, 'b': 3} for k,v in A.__dict__.items(): print({k:v}) # {'__module__': '__main__'} # {'__doc__': ' Class A. '} # {'a': 0} # {'b': 1} # {'__init__': <function A.__init__ at 0x000001F37A39AD08>} # {'test': <function A.test at 0x000001F37A39AD90>} # {'static_test': <staticmethod object at 0x000001F37A3A1080>} # {'class_test': <classmethod object at 0x000001F37A3A10B8>} # {'__dict__': <attribute '__dict__' of 'A' objects>} # {'__weakref__': <attribute '__weakref__' of 'A' objects>}
    # 我的理解是:类、类的实例才有dict

    四、__getattr__、__getattribute__、__get__

    1. 如果定义了__getattribute__,那么无论访问什么属性,都是通过这个函数获取,包括方法,t.f()这种也是访问的这个函数,此时这个函数应该放回一个方法,如果像例子中,仍然返回一个数字,你会获得一个TypeError: 'int' object is not callable错误
    2. 只要定义了__getattribute__方法,不管你访问一个存在的还是不存在的属性,都由这个方法返回,比如访问t.a,虽然a存在,但是只要定义了这个访问,那么就不是访问最开始的a了
    3. 如果__getattribute__抛出了AttributeError异常,并且定了了__getattr__函数,那么会调用__getattr__这个函数,不论这个属性到底是不是存在
    4. 也就是说属性访问的一个大致优先级是:__getattribute__ > __getattr__ > __dict__

     参考来源;https://www.cnblogs.com/andy1031/p/10923834.html

    五、__new__

    __new__方法的第一个参数是类,而其余的参数会在调用成功后全部传递给__init__方法初始化

      

  • 相关阅读:
    RxJava Android(RxAndroid) 开发全家桶
    Android Retrofit RxJava实现缓存
    Android Touch事件传递机制详解 下
    Android Touch事件传递机制详解 上
    Android Framework 记录之二
    XMind 8 Update 7 Pro 激活码
    leetcode 2-> Add Two Numbers
    leetcode 1 -> Two Sum
    leetcode 3-> Longest Substring Without Repeating Characters
    Python enumerate() 函数
  • 原文地址:https://www.cnblogs.com/yinwenbin/p/13043331.html
Copyright © 2020-2023  润新知