Pythonのポインタ?質問する

Pythonのポインタ?質問する

Pythonにはポインタがないことは知っていますが、2代わりにこれを実行する方法はありますか?

>>> a = 1
>>> b = a # modify this line somehow so that b "points to" a
>>> a = 2
>>> b
1

?


次に例を示します。form.data['field']と がform.field.value常に同じ値を持つことを望みます。 必ずしも必要ではありませんが、そうすると便利だと思います。


たとえば、PHP では次のように実行できます。

<?php

class Form {
    public $data = [];
    public $fields;
    
    function __construct($fields) {
        $this->fields = $fields;
        foreach($this->fields as &$field) {
            $this->data[$field['id']] = &$field['value'];
        }
    }
}

$f = new Form([
    [
        'id' => 'fname',
        'value' => 'George'
    ],
    [
        'id' => 'lname',
        'value' => 'Lucas'
    ]
]);

echo $f->data['fname'], $f->fields[0]['value']; # George George
$f->data['fname'] = 'Ralph';
echo $f->data['fname'], $f->fields[0]['value']; # Ralph Ralph

出力:

GeorgeGeorgeRalphRalph

イデオネ


または、C++ では次のようになります (これは正しいと思いますが、私の C++ は錆びついています)。

#include <iostream>
using namespace std;

int main() {
    int a;
    int* b = &a;
    *a = 1;
    cout << a << endl << *b << endl; # 1 1
    
    return 0;
}

ベストアンサー1

その行だけを変更しても、それを実行する方法はありません。次の操作を実行できます。

a = [1]
b = a
a[0] = 2
b[0]

これにより、リストが作成され、参照が a に割り当て、次に b にも割り当てられ、a 参照を使用して最初の要素が 2 に設定され、次に b 参照変数を使用してアクセスされます。

おすすめ記事