Как понять использование метода справки в Python для просмотра информации и методов модуля? - PullRequest
0 голосов
/ 04 июля 2018

один пример:

  1. A запись DNS

Пример кода для записи DNS в Интернете:

# -*- 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(domain, 'A')

А здесь объект? Согласно моему пониманию:

Object = module. class()

Но пример формата здесь:

A = module. method (parameter),

Может ли такой формат также генерировать объект?

Третий вопрос:

A = dns.resolver.query(domain, 'A')

Если A здесь объект, следуйте этой строке:

for i in A.response.answer:

A как объект, могу ли я продолжать использовать метод dns.resolver метода "response.answer" на A, верно ли мое понимание?

1 Ответ

0 голосов
/ 04 июля 2018

Вопрос 1:

Здесь "ответ" - это класс, так что означают следующие @ivar response и @type response? Как оценить ответ. Ответ - это метод?

@ 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 все является объектом. Для объекта = модуль. учебный класс() Не всегда необходимо, у вас могут быть методы / функции для создания объекта класса.

По сути, любое определение функции создаст новый объект некоторого типа. * 1032 например *

def sum():
    return 10

Эта простая функция также создает объект типа int. Теперь вы можете изменить аргументы / определение, чтобы получить обратно определенный вид объектов.

Для вашего случая, когда у нас есть какое-то приложение с соединениями с сервером / соединениями с базой данных / веб-соединением apis и т.д.

  1. Запрос на подключение
  2. Ответ соединения

Скажем, например, что вы отправляете запрос GET на сервер, и сервер отвечает 200 OK (соединение установлено). Ваш запрос GET будет запросом на соединение, а 200 OK - ответом на соединение. При программировании такого рода поведения у нас обычно есть метод запроса, который возвращает мне объект класса Response.

Третий вопрос:

A = dns.resolver.query (домен, 'A')

Если A здесь объект, следуйте этой строке:

для меня в A.response.answer:

A как объект, могу ли я продолжать использовать метод модуля dns.resolver "response.answer" на A, мое понимание верно?

Да, если response.answer - это метод, связанный с A, вы, безусловно, можете его использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...