I created an object like the one below
class POWER:
def __init__(self, voltage, current, wattage):
self.voltage = voltage
self.current = current
self.wattage = wattage
def __repr__(self):
return (
"<Voltage: {:.3} V, Current: {:.5} A, Wattage: {:.5} W>"
.format(self.voltage, self.current, self.wattage)
)
I then tried to send the object in a variety of ways over LoRa
rfm9x.send(POWER(1,1,1))
Traceback (most recent call last):
File "<stdin>", line 467, in <module>
File "/lib/adafruit_rfm9x.py", line 693, in send
TypeError: object of type 'POWER' has no len()
rfm9x.send(bytes(POWER(1,1,1)))
Traceback (most recent call last):
File "<stdin>", line 467, in <module>
TypeError: 'POWER' object is not iterable
The only thing that was able to convert it even somewhat was
rfm9x.send(pickle.dumps(POWER(1,1,1)))
However, it just sends
b'<Voltage: 1 V, Current: 1 A, Wattage: 1 W>'
When it converts like this, it does not seem like you can unpickle it. Am I overlooking something in the construction of these objects? Am I not converting them properly? or is it not possible to convert, transmit and decode the values of an object?
I am facing this trouble
Like this picture,I don't know how to correct it
My Code is here:
import ifcopenshell
ifc_file = ifcopenshell.open(r'C:\Users\18640\Desktop\IFC+RVT\total model\小别墅.ifc')
product = ifc_file.by_type('IfcWall')[0]
for definition in product.IsDefinedBy:
property_definition = definition.RelatingPropertyDefinition
print(property_definition.Name)
for property in property_definition.HasProperties:
if property.is_a('IfcPropertySingleValue'):
print(property.Name)
print(property.NominalValue.wrappedValue)
result:
Traceback (most recent call last):
File "C:/Users/18640/Desktop/ifcopenshell/sample.py", line 6, in <module>
property_definition = definition.RelatingPropertyDefinition
File "C:\ProgramData\Anaconda3\lib\site-packages\ifcopenshell\entity_instance.py", line 68, in __getattr__
"entity instance of type '%s' has no attribute '%s'" % (self.wrapped_data.is_a(), name))
AttributeError: entity instance of type 'IfcRelDefinesByType' has no attribute 'RelatingPropertyDefinition'
codes:
>>> from test2.models import Member_info
>>> member = Member_info.objects.all()
>>> member
<QuerySet [<Member_info: John2>, <Member_info: John1>, <Member_info: John3>]>
>>> member = Member_info.objects.all()[0]
>>> member
<Member_info: gun2>
>>> member += Member_info.obejcts.all()[1]
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: type object 'Member_info' has no attribute 'obejcts'
>>> member += Member_info.objects.all()[1]
Traceback (most recent call last):
File "<console>", line 1, in <module>
TypeError: unsupported operand type(s) for +=: 'Member_info' and 'Member_info'
>>> member.append(Member_info.objects.all()[1])
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: 'Member_info' object has no attribute 'append'
2.How can i append,,,,?
You can append to list, but you are trying to append to Member_info. Try this one:
member = Member_info.objects.all()[0]
members = [member]
members.append(Member_info.objects.all()[1])
This is the code I currently have:
def uniform_distribution(users,radius):
user_coordinates_distance=[]
user_coordinates=[]
finding_shadowing=[]
r=radius*np.sqrt(np.random.uniform(0,1,users))
angle=2*np.pi*np.random.uniform(0,1,users)
x = r*np.cos(angle)
y = r*np.sin(angle)
user_distance = np.sqrt(x*x+y*y)
x_shadowing=1000*x
y_shadowing=1000*y
x_shadowing=(x_shadowing-x_shadowing%10)/10
y_shadowing=(y_shadowing-y_shadowing%10)/10
finding_shadowing=shadowing(x_shadowing,y_shadowing,shadowing_matrix)
print(finding_shadowing)
for i in range (0,users):
user_coordinates=[x[i],y[i],user_distance[i],finding_shadowing[i]]
user_coordinates_distance.append(user_coordinates)
return (user_coordinates_distance)
And this is the error I get when I run it:
Traceback (most recent call last):
File "C:\Users\Ajit\Desktop\maryland\Sem 2\ENTS 656\project656\main program and functions\main_1.py", line 136, in <module>
user_coordinates=uniform_distribution(attempts,cell_radius)#list [x,y,distance,shadowing]
File "C:\Users\Ajit\Desktop\maryland\Sem 2\ENTS 656\project656\main program and functions\main_1.py", line 81, in uniform_distribution
finding_shadowing=shadowing(x_shadowing,y_shadowing,shadowing_matrix)
TypeError: 'float' object is not callable
What exactly does this error mean?
I have the following code:
from random import randint,choice
add=lambda x:lambda y:x+y
sub=lambda x:lambda y:x-y
mul=lambda x:lambda y:x*y
ops=[[add,'+'],[sub,'-'],[mul,'*']]
def gen_expression(length,left,right):
expr=[]
for i in range(length):
op=choice(ops)
expr.append([op[0](randint(left,right)),op[1]])
return expr
def eval_expression (expr,x):
for i in expr:
x=i[0](x)
return x
def eval_expression2 (expr,x):
for i in expr:
x=i(x)
return x
[snip , see end of post]
def genetic_arithmetic(get,start,length,left,right):
batch=[]
found = False
for i in range(30):
batch.append(gen_expression(length,left,right))
while not found:
batch=sorted(batch,key=lambda y:abs(eval_expression(y,start)-get))
print evald_expression_tostring(batch[0],start)+"\n\n"
#combine
for w in range(len(batch)):
rind=choice(range(length))
batch.append(batch[w][:rind]+choice(batch)[rind:])
#mutate
for w in range(len(batch)):
rind=choice(range(length))
op=choice(ops)
batch.append(batch[w][:rind]+[op[0](randint(left,right)),op[1]]+batch[w][rind+1:])
found=(eval_expression(batch[0],start)==get)
print "\n\n"+evald_expression_tostring(batch[0],start)
When I try to call to call genetic_artihmetic with eval_expression as the sorting key, I get this:
Traceback (most recent call last):
File "<pyshell#113>", line 1, in <module>
genetic_arithmetic(0,10,10,-10,10)
File "/home/benikis/graming/py/genetic_number.py", line 50, in genetic_arithmetic
batch=sorted(batch,key=lambda y:abs(eval_expression(y,start)-get))
File "/home/benikis/graming/py/genetic_number.py", line 50, in <lambda>
batch=sorted(batch,key=lambda y:abs(eval_expression(y,start)-get))
File "/home/benikis/graming/py/genetic_number.py", line 20, in eval_expression
x=i[0](x)
TypeError: 'function' object is unsubscriptable
And when I try the same with eval_expression2 as the sorting,the error is this:
Traceback (most recent call last):
File "<pyshell#114>", line 1, in <module>
genetic_arithmetic(0,10,10,-10,10)
File "/home/benikis/graming/py/genetic_number.py", line 50, in genetic_arithmetic
batch=sorted(batch,key=lambda y:abs(eval_expression2(y,start)-get))
File "/home/benikis/graming/py/genetic_number.py", line 50, in <lambda>
batch=sorted(batch,key=lambda y:abs(eval_expression2(y,start)-get))
File "/home/benikis/graming/py/genetic_number.py", line 25, in eval_expression2
x=i(x)
TypeError: 'list' object is not callable
As far as i can wrap my head around this, my guess is that sorted() is trying to recursively sort the sublists,maybe? What is really going on here?
Python version is 2.6 - the one in the debian stable repos.
[snip] here:
def expression_tostring(expr):
expr_str=len(expr)*'('+'x '
for i in expr :
if i[1]=='*':
n=i[0](1)
else:
n=i[0](0)
expr_str+=i[1]+' '+str(n)+') '
return expr_str
def evald_expression_tostring(expr,x):
exprstr=expression_tostring(expr).replace('x',str(x))
return exprstr+ ' = ' + str(eval_expression(expr,x))
x=i[0](x) #here i is a function so you can't perform indexing operation on it
x=i(x) #here i is a list so you can't call it as a function
in both cases the value of i is fetched from expr, may be expr contains different type of object than what you're assuming here.
Try this modification:
def gen_expression(length,left,right):
expr=[]
for i in range(length):
op=choice(ops)
expr.append([op[0], randint(left,right),op[1]])
return expr
def eval_expression (expr,x):
for i in expr:
x=i[0](i[1])
return x
You had expr.append([op[0](randint(left,right)),op[1]]) which will put the return value of the calling the function into the 0th index.