我有一个MyClass类,它存储一个整数a
。我想在其中定义一个带有长度为x
的numpy数组a
的函数,但我希望如果用户没有传入任何内容,x
被设置为随机数组长度相同。 (如果他们传入错误长度的值,我可以提出错误)。基本上,我希望x
默认为大小为a
的随机数组。
以下是我尝试实施此
的尝试import numpy as np
class MyClass():
def __init__(self, a):
self.a = a
def function(self, x = None):
if x == None:
x = np.random.rand(self.a)
# do some more functiony stuff with x
如果没有传入任何内容,则此方法有效,但如果传递x
,我会ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
,即看起来numpy不喜欢将数组与None
进行比较。
定义内联默认值不起作用,因为self
尚未在范围内。
有没有一种不错的pythonic方法来实现这一目标?总而言之,我希望参数x
默认为特定的类定义长度的随机数组。
答案 0 :(得分:3)
根据经验,任何事项和None
的比较都应该使用is
而不是==
进行。
将if x == None
更改为if x is None
可解决此问题。
class MyClass():
def __init__(self, a):
self.a = a
def function(self, x=None, y=None):
if x is None:
x = np.random.rand(self.a)
print(x)
MyClass(2).function(np.array([1, 2]))
MyClass(2).function()
# [1 2]
# [ 0.92032119 0.71054885]