如何在python类中设置此默认值
我正在写一个类,它应该表示一个平行四边形,属性是sideAB,sideDA和angleA,angleA的默认值是90。sideDA的默认值应该与sideAB相同,我不确定如何实现。这就是我试过的如何在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”,这很有意义。
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
的值。另见:,这是提前确定价值的另一个结果。