1. ホーム
  2. python

[解決済み] Pythonでポインタ?

2022-03-02 23:09:48

質問

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;
}

解決方法は?

その行だけ変えてもできるわけがない。 できるのは

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

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