質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

763閲覧

コンストラクタ以外のメソッドでエラーが出てしまいます

Eriiin

総合スコア2

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/08/09 06:12

編集2021/08/09 07:13

前提・実現したいこと

エラーになってしまいます。これはコンストラクタでないからですか?
もしコンストラクタでないことが理由であれば、コンストラクタとコンストラクタでないメソッドとの使える範囲の違いまで教えていただけるとても助かります。

発生している問題・エラーメッセージ

TypeError: User() takes no arguments

該当のソースコード

class User():
''''def Na(self,name):
''''''''self.name=name
''''''''print("hi",self.name)
SUser=User("maru")
SUser.Na()

空白がつかなかったので/を空白の代わりに入れています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2021/08/09 06:40

何が「コンストラクタでない」と言いたいのですか?
javahack

2021/08/09 06:47

teratailで質問する場合はマークダウン記法を覚えましょう。 https://teratail.com/help#about-markdown コードを入力する場合は以下のようにコードを「```」で囲うようにしてください。 ```lang-言語名 テキスト ```
Eriiin

2021/08/09 06:53

うわー!知らなかったです。ありがとうございます!!そのように次回コードを書くようにいたします。
javahack

2021/08/09 06:56

質問は修正可能なので、この質問を修正していただけるとありがたいです。
guest

回答1

0

ベストアンサー

エラーになってしまいます。これはコンストラクタでないからですか?

違います。Userは引数を取るコンストラクタがありません。

投稿2021/08/09 06:35

編集2021/08/09 06:38
maisumakun

総合スコア145208

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Eriiin

2021/08/09 06:40

コンストラクタの意味の理解不足でしたすいません。 意図としては__init__とついたメソッドだと実行できたんですがNaで実行しようとするとエラーが出てしまうというのを言いたかったです。__init__のことをコンストラクタと思っていました汗
maisumakun

2021/08/09 06:42

> __init__のことをコンストラクタと思っていました それは間違っていません。
maisumakun

2021/08/09 06:44

(Pythonのクラスは、コンストラクタを書かなくても、引数を取らないコンストラクタがあるものとして動作します)
maisumakun

2021/08/09 06:45

SUser.Na()」と自分から呼び出しているので、このメソッドが「コンストラクタから書き換えたもの」だったとは全く予期していませんでした。
maisumakun

2021/08/09 06:49

エラーになっているのは、コンストラクタを普通のメソッドに変えたことで「クラス生成時の引数の数が合わなくなった」のが要因です。
Eriiin

2021/08/09 06:50

私の書き方が悪かったです、すいません。 つまり、コンストラクタがついていない場合は引数がない前提で使われるということであっていますか?
maisumakun

2021/08/09 06:53

そうですね、コンストラクタがない場合は、インスタンス生成時にUser()と引数なしでしか書けません。 ただ、「def Na(self,name):」のような引数があるメソッドは、存在しても全く問題ありません(メソッドを呼ぶときに引数を渡します)。
Eriiin

2021/08/09 07:18

ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問