我是python的新手,目前正在使用zeroconf库。
当我尝试在网络上注册服务时,我在功能定义中看到了这一点:
def register_service(self, info, ttl=_DNS_TTL):
"""Registers service information to the network with a default TTL
of 60 seconds. Zeroconf will then respond to requests for
information for that service. The name of the service may be
changed if needed to make it unique on the network."""
self.check_service(info)
self.services[info.name.lower()] = info
if info.type in self.servicetypes:
self.servicetypes[info.type] += 1
else:
self.servicetypes[info.type] = 1
now = current_time_millis()
next_time = now
i = 0
while i < 3:
if now < next_time:
self.wait(next_time - now)
now = current_time_millis()
continue
out = DNSOutgoing(_FLAGS_QR_RESPONSE | _FLAGS_AA)
out.add_answer_at_time(DNSPointer(info.type, _TYPE_PTR,
_CLASS_IN, ttl, info.name), 0)
out.add_answer_at_time(DNSService(info.name, _TYPE_SRV,
_CLASS_IN, ttl, info.priority, info.weight, info.port,
info.server), 0)
out.add_answer_at_time(DNSText(info.name, _TYPE_TXT, _CLASS_IN,
ttl, info.text), 0)
if info.address:
out.add_answer_at_time(DNSAddress(info.server, _TYPE_A,
_CLASS_IN, ttl, info.address), 0)
self.send(out)
i += 1
next_time += _REGISTER_TIME
任何人都知道info
的类型是什么?
修改
感谢您提供的答案是ServiceInfo
课程。除了docstring在搜索它时提供这个答案的事实。我还不清楚:
info
的数据类型需要采取哪些步骤来说明当docstring不可用时? info
的输入参数的一部分时,python解释器知道register_service
是ServiceInfo类的吗?如何知道info.type
是有效的属性,并说info.my_property
不是? 答案 0 :(得分:2)
这是ServiceInfo类的实例。
可以从阅读代码和文档字符串中推断出来。 register_service
调用check_service
函数,我引用该函数“检查网络是否有唯一的服务名称,如果它不是唯一的,则修改传入的ServiceInfo”。
答案 1 :(得分:1)
看起来它应该是ServiceInfo
。在存储库的示例中找到:
https://github.com/jstasiak/python-zeroconf/blob/master/examples/registration.py
修改强>
我也喜欢静态打字。在很大程度上,我认为文档和单元测试只会变得更难以满足要求&#34;在使用动态类型时,因为编译器无法为您完成任何工作。