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__方法初始化

  

原文地址:https://www.cnblogs.com/yinwenbin/p/13043331.html