gpt4 book ai didi

python - 没有 __init__ 方法的类初始化

转载 作者:行者123 更新时间:2023-12-01 04:29:55 26 4
gpt4 key购买 nike

在查看 scapy 源代码 ( https://github.com/jwiegley/scapy ) 时,我发现没有 EtherIPTCPUDP 或任何其他协议(protocol)类包含任何 __init__ 方法,也没有任何带有 @classmothod 注释的类方法。所有此类都继承 Packet 类,其中包含 __init__ 方法。

代码结构是这样的:

class Ether(Packet):
# class methods

class IP(Packet, IPTools):
# class methods

# Other protocol classes

所以,我想知道当我们创建这样的数据包时如何创建此类的实例:

packet = Ether()/IP()/TCP()

我能理解“/”符号。 Packet 类重写了 __rdiv__() 方法,并且由于所有这些类都是 Packet 的子类,因此调用其父 Packet 实例的 __rdiv__() 方法。

但是,我仍然不清楚如何创建这些类的实例。

此外,IP类可以这样创建

ip = IP(src="10.0.0.1")

既然IP没有任何__init__方法,那么如何进行初始化呢?

作为引用,Packet 类的 __init__ 如下所示:

def __init__(self, _pkt="", post_transform=None, _internal=0, _underlayer=None, **fields):
# initialization code

任何帮助将不胜感激。

最佳答案

如果类不包含自己的__init__(),它只会从父类(super class)中获取一个。仅在添加更改时才需要覆盖的 __init__()。也许this将帮助您理解

关于python - 没有 __init__ 方法的类初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32522565/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com