如何在python类中设置此默认值

如何在python类中设置此默认值,python,class,object,Python,Class,Object,我正在写一个类,它应该表示一个平行四边形,属性是sideAB,sideDA和angleA,angleA的默认值是90。sideDA的默认值应该与sideAB相同,我不确定如何实现。这就是我试过的 class Quad( object ): def __init__( self, AB, DA=AB, A=90 ): self.sideAB = AB self.sideDA = DA self.angleA = A 我得到一个错误:没有定义名称“AB”,这很有意义。

我正在写一个类,它应该表示一个平行四边形,属性是sideAB,sideDA和angleA,angleA的默认值是90。sideDA的默认值应该与sideAB相同,我不确定如何实现。这就是我试过的

class Quad( object ):

def __init__( self, AB, DA=AB, A=90 ):


    self.sideAB = AB
    self.sideDA = DA
    self.angleA = A
我得到一个错误:没有定义名称“AB”,这很有意义。任何帮助都将不胜感激

B_u___;C

A | uuuuuuuu| D


我希望这会有所帮助。其他参数只能从函数定义中访问(因此不能有默认参数
DA=AB
)。处理此问题的一种方法是默认设置为
None
,然后在函数中对
None
进行特殊解释

class Quad:
    def __init__(self, AB, DA=None, A=90):
        self.sideAB = AB
        self.sideDA = AB if DA is None else DA
        self.angleA = A

square = Quad(10)
rect = Quad(10,20)
rhombus = Quad(10,A=30)
parallelogram = Quad(10,20,30)

其他参数只能从函数定义中访问(因此不能有默认参数
DA=AB
)。处理此问题的一种方法是默认设置为
None
,然后在函数中对
None
进行特殊解释

class Quad:
    def __init__(self, AB, DA=None, A=90):
        self.sideAB = AB
        self.sideDA = AB if DA is None else DA
        self.angleA = A

square = Quad(10)
rect = Quad(10,20)
rhombus = Quad(10,A=30)
parallelogram = Quad(10,20,30)

可能是画ABCD会有帮助。我想你们的意思是,对边应该相等,两个参数对于平行四边形来说就足够了,因为对边是平行的,相等的?DA是sext边,是这样做的,所以如果我只输入一个值,我会得到一个平方,可能画ABCD会有帮助。我想你的意思是,对边应该相等,两个参数对于平行四边形来说就足够了,因为对边是平行的,相等的?DA是sext边,是这样做的,所以如果我只输入一个值,我会得到一个平方,如果DA不是None Other AB,我也可以将DA更改为None Other AB
不用了
。非常感谢!我不知道这样写“如果”是可能的,我会试试看it@Mario谢谢你的建议!我已经更新了我的答案。更重要的是,默认值是提前计算的,并在函数对象中绑定
DA=AB
尝试在遇到
def
时,在调用它之前使用
AB
的值。另请参见:,这是提前确定值的另一个结果。如果DA不是None Other AB,也可以将
DA更改为
AB,如果DA不是None Other DA
,以摆脱
not
。非常感谢!我不知道这样写“如果”是可能的,我会试试看it@Mario谢谢你的建议!我已经更新了我的答案。更重要的是,默认值是提前计算的,并在函数对象中绑定
DA=AB
尝试在遇到
def
时,在调用它之前使用
AB
的值。另见:,这是提前确定价值的另一个结果。