ここから本文です

Pythonのクラスについて教えてください。 クラスの勉強をしています。次のよう...

アバター

ID非公開さん

2017/9/1011:05:07

Pythonのクラスについて教えてください。

クラスの勉強をしています。次のようなコードを書きました。

-----コードここから-----

class User_of_the_server():
def __init__(self

, user_id, user_name, user_server):
self.id = "%s-%s" % (user_server, user_id)
self.name = user_name
self.server = user_server

user2 = User_of_the_server("31531", "NoName2", "Server1") #1
user3 = User_of_the_server(31533, "NoName3", "Server2") #2
user4 = User_of_the_server("001", "NoName3", "Server3") #3
user5 = User_of_the_server(002, "NoName4", "Server4") #4

-----コードここまで-----

このコードを実行したところ、次のエラーが出ました。

----エラーメッセージここから-----

Press ENTER or type command to continue
File "test_b.py", line 10
user5 = User_of_the_server(002, "NoName4", "Server4")
^
SyntaxError: invalid token

-----エラーメッセージここまで-----

エラーが出ているのは#4の部分のコードであり、user_idの引数に「0から始まる生の数値」を入れているのがまずいようです。(#3のようにstr化すれば問題ありませんし、#2のように3から始まるuser_idであれば問題ありません。)

クラスに所属するインスタンスを定義する場合、その引数は必ずstrを使うというようなルールが存在するのでしょうか。なぜ3から始まるintならOKなのに0から始まるintではエラーが発生するのでしょうか。

よろしくお願いします。

閲覧数:
120
回答数:
1

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

nan********さん

2017/9/1011:49:10

Python2 だとエラーになりませんね。

Python3 の癖です。
実は、0 から始まる数字は、8進数ですという意味なのです。
Python2 では、002 でも 8進数でOKでした。
しかし、それでは8進数と分かりにくいので、
Python3 からは、
0o002 と書かないといけない決まりに変わりました。

アバター

質問した人からのコメント

2017/9/10 15:15:02

ありがとうございました。良く分かりました。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる