You could just use a single variable in the player class to manage your ammo variable:
player.gd
signal ammo_changed(ammo_left)
...
func shoot()
ammo -= 1
emit_signal(ammo_changed, ammo)
to connect the two:
mutual_parent_node.gd
onready var player = get_node("Player") # wherever these are located
onready var control_node = get_node("ControlNode") # whereever these are located
func _ready():
player.connect("ammo_changed", control_node, "_on_ammo_changed")
finally
control_node.gd
# gets called whenever ammo_changed is emitted because of the connect() function
func _on_ammo_changed(ammo):
labelAmmo = str(ammo)
# or something like:
label.text = str(ammo)