在Python中初始化dataclass中的属性时,如何调用类公共方法?

在Python中初始化dataclass中的属性时,如何调用类公共方法?,python,python-3.x,python-dataclasses,Python,Python 3.x,Python Dataclasses,我刚刚学习了Python中的数据类,我非常乐意尝试使用它们。在这个过程中,我正在尝试一个示例,在这个示例中,我想调用一个类方法来初始化一个类属性。下面是我正在尝试的一个例子: @dataclass(init=True,repr=True,eq=True,order=False,unsafe_hash=False,freezed=False) 课堂测试: def连接到数据库(自): string=f“DRIVER={{sqlserver}};Server={self.Server}\ f“数据库=

我刚刚学习了Python中的数据类,我非常乐意尝试使用它们。在这个过程中,我正在尝试一个示例,在这个示例中,我想调用一个类方法来初始化一个类属性。下面是我正在尝试的一个例子:

@dataclass(init=True,repr=True,eq=True,order=False,unsafe_hash=False,freezed=False)
课堂测试:
def连接到数据库(自):
string=f“DRIVER={{sqlserver}};Server={self.Server}\
f“数据库={self.DATABASE};可信连接=是
返回pyodbc.connect(字符串)
服务器:str=field(repr=True,默认值为“我的服务器”)
数据库:str=field(repr=True,默认值为myu数据库)
conn:str=connect_to_database()#此操作失败-无法在数据类中引用self?

当我四处阅读时,我发现其中一个选项建议使用post_init(),这似乎是一个很好的建议,但是我想知道这是否是一个选项,是否允许重载?对于post_init(),我有一个不同的用例。非常感谢您的任何建议

为什么不使用一个属性?@wim,您能提供一个工作示例吗?除非我了解问题的实质。那么,为什么不使用一个属性呢?请注意,在定义类时,您没有任何实例(类型还不存在)-那么您希望
test\u方法()
实际做什么?您不理解问题的哪一部分?如果您计划帮助dataclass连接数据库作为字段,请提供有用的反馈?我认为这不是个好主意。数据类应该是简单的数据包,不处理复杂的东西,如数据库连接,通常需要事务管理、上下文、回滚等。为什么不使用属性?@wim,你能提供一个工作示例吗?直到我理解问题的实质。那么,为什么不使用一个属性呢?请注意,在定义类时,您没有任何实例(类型还不存在)-那么您希望
test\u方法()
实际做什么?您不理解问题的哪一部分?如果您计划帮助dataclass连接数据库作为字段,请提供有用的反馈?我认为这不是个好主意。数据类应该是简单的数据包,而不是处理复杂的东西,如数据库连接,它通常需要事务管理、上下文、回滚等。