gpt4 book ai didi

python - 在类常量中调用类方法

转载 作者:行者123 更新时间:2023-11-28 22:10:33 25 4
gpt4 key购买 nike

我通过套接字发送一个对象,想知道该对象的字节大小。我写了一个方法将对象作为字节返回。在接收方必须知道对象的大小,所以我导入类并想使用常量。为了定义常量,我写了一个以字节为单位返回长度的类方法,但我不能自己调用​​类中的类函数。对象的大小可以在开发项目时改变,这就是为什么我动态地计算使用大小的原因。

class democlass():

BYTE_SIZE = democlass.get_byte_size()

def __init__(self, t: int):
self.data = t

def as_bytes(self) -> bytes:
"""
Some struct.pack() stuff.
"""
return objectasbytes

@classmethod
def get_byte_size(cls) -> int:
return len(democlass(5).as_bytes())
import democlass


class server(threading.Thread):

def __init__(self, t: int):
threading.Thread.__init__(self)
self.__sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
addr = (
'0.0.0.0',
self.port
)
self.__sock.bind(addr)

def run(self) -> bytes:
while True:
msg = sock.recv(democlass.BYTE_SIZE)
do_something_withdata()

错误信息:

BYTE_SIZE = democlass.get_byte_size()
NameError: name 'democlass' is not defined

最佳答案

在完全定义之前,您不能构造类的实例。将“常量”的定义移到类定义之后并将其显式附加到类,这将起作用,同时仍然表现相同:

class democlass():

def __init__(self, t: int):
self.data = t

def as_bytes(self) -> bytes:
"""
Some struct.pack() stuff.
"""
return objectasbytes

@classmethod
def get_byte_size(cls) -> int:
return len(democlass(5).as_bytes())

democlass.BYTE_SIZE = democlass.get_byte_size()

关于python - 在类常量中调用类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56578215/

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