teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

説明補足

2020/06/06 13:07

投稿

shiracamus
shiracamus

スコア5406

answer CHANGED
@@ -1,7 +1,9 @@
1
1
  `self.__values = ` で代入していて、`__value` には外部からアクセスするな! と自己主張しています。
2
2
  `self.value = ` にすれば `v1.value` や `v2.value` でアクセスできます。
3
3
 
4
- ただし、value に代入しているのは単なるリストなので、`return self.values @ other.values` の演算はできません。
4
+ ただし、value に代入しているのは単なるリストで `@`演算をサポートしていので、`return self.values @ other.values` の演算はできません。
5
+ 自分でリスト同士の内積計算処理を書く必要があります。
6
+
5
7
  ```python
6
8
  >>> [1,2] @ [2,3]
7
9
  Traceback (most recent call last):

3

動作確認コード追記

2020/06/06 13:07

投稿

shiracamus
shiracamus

スコア5406

answer CHANGED
@@ -7,4 +7,18 @@
7
7
  Traceback (most recent call last):
8
8
  File "<stdin>", line 1, in <module>
9
9
  TypeError: unsupported operand type(s) for @: 'list' and 'list'
10
+ ```
11
+
12
+ 動作確認するだけなら、こんなコードでもいけますよ。
13
+
14
+ ```python
15
+ >>> class Sample:
16
+ ... def __matmul__(self, other):
17
+ ... return "Hello, world!"
18
+ ...
19
+ >>> v1 = Sample()
20
+ >>> v1 @ 123
21
+ 'Hello, world!'
22
+ >>> v1 @ [1, 2, 3]
23
+ 'Hello, world!'
10
24
  ```

2

コード追記

2020/06/06 12:42

投稿

shiracamus
shiracamus

スコア5406

answer CHANGED
@@ -1,4 +1,10 @@
1
1
  `self.__values = ` で代入していて、`__value` には外部からアクセスするな! と自己主張しています。
2
2
  `self.value = ` にすれば `v1.value` や `v2.value` でアクセスできます。
3
3
 
4
- ただし、value に代入しているのは単なるリストなので、`return self.values @ other.values` の演算はできません。
4
+ ただし、value に代入しているのは単なるリストなので、`return self.values @ other.values` の演算はできません。
5
+ ```python
6
+ >>> [1,2] @ [2,3]
7
+ Traceback (most recent call last):
8
+ File "<stdin>", line 1, in <module>
9
+ TypeError: unsupported operand type(s) for @: 'list' and 'list'
10
+ ```

1

追記

2020/06/06 12:30

投稿

shiracamus
shiracamus

スコア5406

answer CHANGED
@@ -1,2 +1,4 @@
1
1
  `self.__values = ` で代入していて、`__value` には外部からアクセスするな! と自己主張しています。
2
- `self.value = ` にすれば `v1.value` や `v2.value` でアクセスできます。
2
+ `self.value = ` にすれば `v1.value` や `v2.value` でアクセスできます。
3
+
4
+ ただし、value に代入しているのは単なるリストなので、`return self.values @ other.values` の演算はできません。