Python 2.7 如何理解在Python中使用help方法来查看模块的信息和方法?

Python 2.7 如何理解在Python中使用help方法来查看模块的信息和方法?,python-2.7,dns,Python 2.7,Dns,一个例子: DNS的一个记录 internet中DNS的A记录示例代码如下: # -*- coding: utf-8 -*- # @Time : 2017/10/1 9:58 # @File : DNS.py # @Software: PyCharm import dns.resolver domain = input("Please input Domain name:") A = dns.resolver.query(domain, 'A') for i

一个例子:

  • DNS的一个记录
  • internet中DNS的A记录示例代码如下:

    # -*- coding: utf-8 -*-
    # @Time : 2017/10/1 9:58 
    # @File : DNS.py 
    # @Software: PyCharm
    import dns.resolver
    domain = input("Please input Domain name:")       
    A = dns.resolver.query(domain, 'A')         
    for i in A.response.answer:             
    # print(i)              
        for j in i.items:                   
            print(j)
    
    这里dns.resolver是一个模块,我可以根据“help>dns.resolver”找到这个模块的类和相应的方法,比如它的“query”方法

    我要确认响应。答案是dns.resolver方法,请查找以下信息:

      class Answer(__builtin__.object)
    
     |  DNS stub resolver answer
    
     |  
    
     |  Instances of this class bundle up the result of a successful DNS
    
     |  resolution.
    
     |  
    
     |  For convenience, the answer object implements much of the sequence
    
     |  protocol, forwarding to its rrset.  E.g. "for a in answer" is
    
     |  equivalent to "for a in answer.rrset", "answer" is equivalent
    
     |  to "answer.rrset", and "answer[i:j]" is equivalent to
    
     |  "answer.rrset[i:j]".
    
     |  
    
     |  Note that CNAMEs or DNAMEs in the response may mean that answer
    
     |  node's name might not be the query name.
    
     |  
    
     |  @ivar qname: The query name
    
     |  @type qname: dns.name.Name object
    
     |  @ivar rdtype: The query type
    
     |  @type rdtype: int
    
     |  @ivar rdclass: The query class
    
     |  @type rdclass: int
    
     |  @ivar response: The response message
     |  @type response: dns.message.Message object
    
     |  @ivar rrset: The answer
    
     |  @type rrset: dns.rrset.RRset object
    
     |  @ivar expiration: The time when the answer expires
    
     |  @type expiration: float (seconds since the epoch)
    
     |  @ivar canonical_name: The canonical name of the query name
    
     |  @type canonical_name: dns.name.Name object
    
    第一个问题:

    这里的“答案”是一个类,那么下面的@ivar响应和@type响应是什么意思呢?如何判断回答。回答是一种方法吗

    第二个问题:

    A=dns.resolver.query(域“A”)

    这是一个物体吗?据我了解:

    Object=模块。类()

    但这里的示例格式是:

    A=模块。方法(参数),

    这种格式也能生成对象吗

    第三个问题:

    A=dns.resolver.query(域“A”)

    如果此处是一个对象,请按照以下行操作:

    A.response中的i。回答:

    A作为一个对象,我是否可以继续使用模块dns.resolver方法“response.answer”,我的理解是否正确?

    问题1:

    这里的“答案”是一个类,那么下面的@ivar响应和@type响应是什么意思呢?如何判断回答。回答是一种方法吗

    @ivar和@type基本上分别是变量名和变量类型。 此代码编写正确。因此,为了告诉用户每个变量的作用以及每个变量的类型,这些是程序员使用的约定。 您有时也会看到@param@type@rtype@return等

    对于第二部分,您可以看到

     @ivar response: The response message
     @type response: dns.message.Message object
    
    这表示响应变量是dns.message.message类的对象。 因此,它将具有一些与之相关联的属性和方法。有关更多信息,请参阅此类dns.message.message的帮助

    问题2:

    A=dns.resolver.query(域“A”)

    这是一个物体吗?据我了解:

    对象=模块。类()

    但这里的示例格式是:

    A=模块。方法(参数)

    这种格式也能生成对象吗

    在python中,一切都是一个对象。 对于对象=模块。类() 并不总是必要的,您可以使用方法/函数来创建类的对象

    基本上,任何函数定义都会创建某种类型的新对象。e、 g

    def sum():
        return 10
    
    这个简单的函数还创建int类型的对象。现在,您可以修改参数/定义以获取特定种类的对象

    对于您的情况,当我们有一些具有服务器连接/数据库连接/web连接API等的应用程序时,我们每个应用程序有两个实体

  • 连接请求
  • 连接响应
  • 例如,假设您向服务器发送GET请求,服务器以200 OK(连接成功)进行响应。GET请求将是连接请求,200OK是连接响应。 在编程这种行为时,我们通常有一个request方法,它将返回Response类的对象

    第三个问题:

    A=dns.resolver.query(域“A”)

    如果此处是一个对象,请按照以下行操作:

    对于A.response.response中的i:

    A作为对象,我是否可以继续使用模块dns.resolver方法 “回答。回答”在A上,我的理解正确吗

    是的,如果response.answer是与关联的方法,您当然可以使用它