python 通过函数设置数据类示例属性

hec6srdp  于 2022-12-10  发布在  Python
关注(0)|答案(1)|浏览(164)

我怎样才能使这篇文章不那么冗长而更优美呢?

@dataclass
class Bla:
   
    number: int
    numberPlusOne = field(init = False)

    def __post_init__(self):
        self.numberPlusOne = self.addOne(self.number)

    def addOne(self, number):
        number += 1
        return number

Bla(10)
Output: Bla(number = 10, numberPlusOne = 11)

我必须使用post init方法吗?我正在尝试类似以下的方法:

@dataclass
class Bla:
   
    number: int
    numberPlusOne int = self.addOne(self.number)

    def addOne(self, number):
        number += 1
        return number

但我得到错误,无法使它工作。

vu8f3i0k

vu8f3i0k1#

在我的选项中,__post_init__方法是最好的方法。field方法也有default参数,但不可能将动态值指定为默认值。

def addOne(self, number):
        number += 1
        return number

此方法可能很危险,因为u会增加方法参数,而且在某些情况下,您可能会修改原始对象。(https://medium.com/@meghamohan/mutable-and-immutable-side-of-python-c2145cf72747
最大限度简化;)就这样:

# add_one is `snake_case` naming style which should be  
# use to name methods, functions, variables and obj. instances
def add_one(self, number: int) -> int: 
    return number+1

相关问题