Python3.11 中 dataclass 不支持类方法了吗?

先上图:

按教程所述,首先执行的应是 init 方法,然后执行 post_init 方法,但由上图可见这两个方法均未执行,在调用第三个方法时又出现这个错误!
请哪位高手看下,给予解答,谢谢!

最佳答案

这个跟dataclasses没有关系。要运行类方法,首先得创建一个类的实例(对象),如下:

from dataclasses import dataclass

@dataclass
class bx:
    x: int=0
    y: int=0
    z: int=0
    def __init__(self):
        self.x = 3
        self.y = 4
        self.z = 5
    def get_z(self):
        return self.z

print(bx.x)
bx1 = bx()
print(bx1.x)
print(bx1.get_z())

这里的self指的就是实例。

1年前 评论
讨论数量: 3

这个跟dataclasses没有关系。要运行类方法,首先得创建一个类的实例(对象),如下:

from dataclasses import dataclass

@dataclass
class bx:
    x: int=0
    y: int=0
    z: int=0
    def __init__(self):
        self.x = 3
        self.y = 4
        self.z = 5
    def get_z(self):
        return self.z

print(bx.x)
bx1 = bx()
print(bx1.x)
print(bx1.get_z())

这里的self指的就是实例。

1年前 评论
Jason990420
from dataclasses import dataclass

@dataclass
class Bx():
    x:int = 0
    y:int = 0
    z:int = 0
    def __init__(self):
        self.x = 3
        self.y = 4
        self.z = 5
    def __post_init__(self):
        self.z = (self.x * self.y) / 2
    def get_z(self):
        return self.z

bx = Bx()
print(bx.x, bx.y, bx.z)
print(Bx.x, Bx.y, Bx.z)
print(bx.get_z())
3 4 5
0 0 0
5
1年前 评论
leuelcey_2002 (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!