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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

解決済

2回答

999閲覧

Pythonのクラスメソッドにおける変数をあらかじめ宣言したい

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

0クリップ

投稿2018/09/18 05:09

編集2018/09/18 05:32

前提・実現したいこと

Pythonのクラス内のクラスメソッドの変数をあらかじめ宣言したいです.

発生している問題

以下のコードを用いると,

SyntaxError: invalid syntax

と表示されます.

該当のソースコード

python

1class fugafuga: 2 @classmethod 3 def hogehoge(cls, a=10): 4 print(a)

試したこと

ネットの記事をいろいろ調べたのですが,よくわからずこちらに質問しました.

補足情報(FW/ツールのバージョンなど)

Python3.6.5です.

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

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

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

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

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

fuzzball

2018/09/18 05:19 編集

このコードだけでは invalid syntax は出ないようですが。エラーの出るコードを書いて下さい。
退会済みユーザー

退会済みユーザー

2018/09/18 05:39

このメソッドを使った際にエラーが出ます...
fuzzball

2018/09/18 05:44

だから、そのエラーが出るコードを書いて下さい。
guest

回答2

0

classとdefの間に、変数を用意するという方法ではだめですか?

リンク

あまり関係ないですが、printのインデントがずれているのは質問する時の誤表記?

追記
この様に正しく動作しますので、fuzzballさんの仰るように呼び出し側の問題だと予想されます。

python

1class hoge: 2 3 @classmethod 4 def huga(cls, a=10): 5 print(a) 6 7 8hoge.huga() 9 10hoge.huga(3) 11
10 3

投稿2018/09/18 05:17

編集2018/09/18 06:12
Yuki_S

総合スコア356

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

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

退会済みユーザー

退会済みユーザー

2018/09/18 05:31

``` class fugafuga: a = 10 @classmethod def hogehoge(cls, a): print(a) ``` 上のように書くということですか?この場合だとクラスメソッドを使う際にaに何も代入しないとうまく動作しない気がしますが大丈夫でしょうか?(自分のコードの書き方が間違っているからかもしれませんが...) 目標はnumpyのconcatenateなどのように()内に"axis=1"と書かなくても動作し,書いても正しい値ならば動作するとうクラスです(日本語が拙くて申し訳ないです...). ちなみにインデントのずれは誤表記です.紛らわしいので編集します.
Yuki_S

2018/09/18 05:59

目標をいただいて、やりたいことを理解できました。 だとするといまdiohabaraさんのかいている通りで動作するのではないかと思います。 fuzzballさんの言っている通り、実際に呼び出しているコードに問題がある可能性が高いと思います、
guest

0

ベストアンサー

上だと書き忘れていたが下記のように書いた所問題があったのでaにある": int"の部分を削ったところ

python

1@classmethod 2def hoge(cls, a=10: int, b: int):

こちらに書いてあるエラーが発生したため,リンク先を参考にして直したところ解決した.

###お詫び
業務上の理由でクラス側のソースしか出せませんでした.申し訳ないです.

投稿2018/09/18 06:33

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問