■ このスレッドは過去ログ倉庫に格納されています
pythonの勉強始めたんだがエラーが出て原因が分からん
- 1 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:24:26 ID:zQsU0upY0.net
- エラー文見ろとかいうクソなことは言うなよ
見てるに決まってるググって調べてるに決まってるからな分かったな
実行文↓ コードは次に貼る
C:\Users\riku1\OneDrive\ドキュメント\RESEARCH\PL>py test.py
Module is called
Classes and Functions are imiported
My name is bob
Human()
I'm tom. My stupid experience is suicide
Stupid
My name is mike and charge is cheaf
Human()
I'm innocense
Stupid
Traceback (most recent call last):
File "test.py", line 31, in <module>
mp.Human.printcnt()
AttributeError: type object 'Human' has no attribute 'printcnt'
- 2 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:24:50 ID:zQsU0upY0.net
- test.py↓
import mypackage.module as mp
#from module import *
#exe
bob=mp.Human("bob")
bob.introduce()
bob.sayFuncName()
tom=mp.Stupid("tom","suicide")
tom.introduce()
tom.sayFuncName()
mike=mp.Criminal("mike","cheaf")
mike.introduce()
mike.sayFuncName()
maria=mp.Innocent("maria")
maria.introduce()
maria.sayFuncName()
'''
bob=Human("bob")
bob.introduce()
bob.sayFuncName()
tom=Stupid("tom","suicide")
tom.introduce()
tom.sayFuncName()
mike=Criminal("mike","cheaf")
mike.introduce()
mike.sayFuncName()
maria=Innocent("maria")
maria.introduce()
maria.sayFuncName()
'''
mp.Human.printcnt()
- 3 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:25:04 ID:6CegeQDLd.net
- リクくんドンマイ………
- 4 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:25:20 ID:xsiNi/n1d.net
- 型がまちがってんじゃね
- 5 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:25:49 ID:MP0WiG8G0.net
- pornhubに見えた
- 6 :以下、\(^o^)/でVIPがお送りします:2020/05/11(月) 01:25:57 ID:G0qoyYq00.net
- リクくん可愛い
- 7 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:25:57 ID:WeVWtL9y0.net
- riku1
- 8 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:25:57 ID:zQsU0upY0.net
- package\module.py↓
class Human():
count=0
def __init__(a,name="none"):
a.name=name
Human.count+=1
def introduce(self):
print("My name is {0}".format(self.name))
def sayFuncName(self):
print("Human()")
@classmethod
def printcnt(cls):
print(cls.count)
class Stupid():
def __init__(self,name="none",experience="A stupid thing"):
self.name=name
self.exp=experience
def introduce(self):
print("I'm {0}. My stupid experience is {1}".format(self.name,self.exp))
def sayFuncName(self):
print("Stupid")
class Criminal(Human,Stupid):
def __init__(self,name="None",charges="None"):
super().__init__(name)
self.charges=charges
def introduce(self):
print("My name is {0} and charge is {1}".format(self.name,self.charges))
class Innocent(Stupid,Human):
def __init__(self,name="name"):
super().__init__(name)
def introduce(self):
print("I'm innocense")
print("Module is called")
print("Classes and Functions are imiported")
- 9 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:26:03 ID:qMj+MsuBr.net
- インデントがおかしいからさ〜
構文チェッカを使いなよう
- 10 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:27:08 ID:3SuwLtRo0.net
- printcnt が何かわからないけど実装してる?typoとかじゃない?
- 11 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:27:37 ID:TUrDVzAyr.net
- エラーの原因は3つしかない。
勉強不足、調査不足、仮定不足。
- 12 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:27:46 ID:zQsU0upY0.net
- 問題はmodule.pyの@classmethodの部分かtest.pyのmp.Human.printcnt()なんだろうけどどういじってもエラー出る
- 13 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:28:37 ID:zQsU0upY0.net
- indentは5chがクソだからコピペで反映されてないだけでちゃんとソースファイルではしてるから
- 14 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:29:03 ID:3SuwLtRo0.net
- 引数 cls がいるんじゃないの
- 15 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:31:12 ID:zQsU0upY0.net
- >>14
関数定義にってこと?ちゃんと書いてるよ
呼び出しのときはインスタンスと同じようにclsにはクラス自身が自動的に入るから記述しなくてもいいはず
- 16 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:31:15 ID:IV623cMh0.net
- Human.printcnt()
クラスに生えてるわけだしインスタンスからじゃなくてクラスから呼んでみれば?
- 17 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:31:24 ID:z4N+O0zDM.net
- 聞く態度ゴミすぎる
誰がお前に教えたがるのか
- 18 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:34:00 ID:zQsU0upY0.net
- >>16
Humanはクラス名だからクラスから呼び出してるはず
- 19 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:37:28.286 ID:IV623cMh0.net
- >>18
mp.__class__.printcnt()
では?覚えてないが
>>18
- 20 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:38:14.493 ID:zQsU0upY0.net
- Humanの定義
class Human():
count=0
def __init__(a,name="none"):
a.name=name
Human.count+=1
def introduce(self):
print("My name is {0}".format(self.name))
def sayFuncName(self):
print("Human()")
@classmethod
def printcnt(cls):
print(cls.count)
test.pyの呼び出し文
mp.Human.printcnt()
エラー文
Traceback (most recent call last):
File "test.py", line 31, in <module>
mp.Human.printcnt()
AttributeError: type object 'Human' has no attribute 'printcnt'
- 21 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:40:31 ID:zQsU0upY0.net
- print(mp.Human.count)だと上手くいく
- 22 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:41:22 ID:qfmh8OHg0.net
- 詳しくないけどHumanじゃprintcnt使えないってことじゃないの?
- 23 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:41:34 ID:IseBY0qTM.net
- >>20のclsをselfにすればいいんじゃない?
- 24 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:44:57 ID:zQsU0upY0.net
- >>23
ただの仮引数だし名前は関係ないんじゃね?
一応試したけどダメだった
- 25 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:52:13 ID:3SuwLtRo0.net
- Module is called
Classes and Functions are imiported
My name is bob
Human()
I'm tom. My stupid experience is suicide
Stupid
My name is mike and charge is cheaf
Human()
I'm innocense
Stupid
2
手元でインデント正しく直して動かしたらこうなったよ
- 26 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:57:08 ID:zQsU0upY0.net
- >>25
嘘だ
- 27 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:57:28 ID:P1WcDAp+M.net
- すまん嘘だったわ
- 28 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:57:42 ID:xsiNi/n1d.net
- 大体アナコンダ入れればなおる
- 29 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:58:35 ID:zQsU0upY0.net
- >>28
使ってないけど一応入ってる
- 30 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:59:27 ID:hMbRd0AmM.net
- >>29
使うか消すかしたほうがいいと思います
- 31 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 01:59:35 ID:3SuwLtRo0.net
- >>26
できるならgistに貼るとかしてみて
たぶんインデント狂ってる気がするよ
- 32 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:01:37 ID:zQsU0upY0.net
- >>31
github?
授業で使ったことあるけどよくわからん
- 33 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:07:23 ID:3SuwLtRo0.net
- https://wandbox.org/permlink/pu3VfKFJhvI6UAi8
mypackage/module.py をまとめて mp. 取るようにしたコード
これで実行できるからたぶんそっちのコードの何かが間違ってる
- 34 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:10:04 ID:zQsU0upY0.net
- imgurに張った
https://i.imgur.com/eIv0HGr.png
- 35 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:10:24.903 ID:3SuwLtRo0.net
- ちなみにこれは貼るためにまとめただけで手元ではちゃんと mypackage/module.py と分離して動かしてる
- 36 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:14:12 ID:3SuwLtRo0.net
- Windows 環境分からないけどいちおう確認でPython -V でバージョン 3.7 以降くらいだよね
あと >>33 で貼ったコードをそのまま test2.py とかにして手元で実行したらどうなる?
- 37 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:16:33 ID:zQsU0upY0.net
- >>33のmodule.pyの部分だけコピペしてみたけどやっぱりエラーでるな
処理系の問題?
- 38 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:16:45 ID:3SuwLtRo0.net
- >>34
これはぱっと見あってる気がするから疑ってすまんかった
- 39 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:17:22 ID:zQsU0upY0.net
- Python 3.8.3 rc1 だった
- 40 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:18:06 ID:3SuwLtRo0.net
- まるっとコピって実行して動かないなら処理系かOS 依存な気がする
Mac とWandbox では動くからソースは問題ない気がする
- 41 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:21:17 ID:3SuwLtRo0.net
- >>39
ためしに合わせてみようと思ったけど rc はちょっと面倒だな
安定版入ってない?
- 42 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:21:25 ID:zQsU0upY0.net
- やべえ
上手くいったけどマジであほみたいなミスで申し訳ない
- 43 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:22:19 ID:3SuwLtRo0.net
- お。うまくいった?後学のために原因を教えていただきたく
- 44 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:22:32 ID:zQsU0upY0.net
- マジで1時間以上悩んでたのが馬鹿みたいだしこんな間抜けに突き合わせてしまって申し訳なさすぎる
- 45 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:22:39 ID:FwbFZ6a/0.net
- 引数不足じゃないの
- 46 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:23:17 ID:FwbFZ6a/0.net
- と思ったら終わってた
- 47 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:23:38 ID:yFCDTKWe0.net
- スペースが全角だったか
- 48 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:24:39 ID:zQsU0upY0.net
- >>43
後学もクソもないと思う
俺がクソみたいな見落とししてただけ
mypackageの中とカレントディレクトリの両方にmodule.pyが作られてて
そのカレントディレクトリの方のmodule.pyにだけprintcnt()関数を書いてた
当然importしてるのはmypackageの方だけだから見つかるはずがない
マジですまんかった
- 49 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:26:36 ID:SIjuB1HPM.net
- どうでもいいけど
パスのドキュメントってカタカナ入ってるのいつかバグおこしそう
- 50 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:26:55 ID:xSoPaWMQr.net
- 稀によくあるよそれ気にすんな
- 51 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:27:39 ID:3SuwLtRo0.net
- >>48
草
つまりそもそも mypackage の中は完成品じゃなかったのね
>>34
VSCode の画像貼るときにエクスプローラーとかディレクトリ名も一緒に出してたらここで気づけたかも
設定できたはずだから調べてみるといいよ
- 52 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:28:19 ID:zQsU0upY0.net
- >>49
俺も直したいんだけど、一回"document"に変更したらonedriveがバグったから触れないようにしてる
- 53 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:29:10 ID:zQsU0upY0.net
- >>51
ありがとう
ちなみにVScodeじゃなくてatomだぜ
- 54 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:30:38 ID:3SuwLtRo0.net
- >>49
>>52
うろ覚えだけど新しいWindows は標準のディレクトリに関してはエクスプローラーの見た目の言語と内部の名称は別で持ってるから正しく実装されてるソフトならあまり問題は出ないかも
- 55 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:31:25 ID:3SuwLtRo0.net
- >>53
ほんとだ。アイコン見てなかった
見た目そっくりだなー
- 56 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:35:11 ID:zQsU0upY0.net
- >>54
c:\users\riku1\にdocument(エクスプローラでは”ドキュメント”)があることは確認したんだけど、onedriveディレクトリもあってその中に”ドキュメント”フォルダがあるんだよな
windowsだからonedrive使ってるけど結構異端なのか?
- 57 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:39:53 ID:3SuwLtRo0.net
- >>56
あ。ちゃんと見てなかったわ。ぼけぼけっすね
異端と言うならソースはOneDrive じゃなくてGit で管理していこう。とかになるな。いまはGitHub のほとんどの機能が無償で使えるから触れるようになるといいよ
- 58 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:41:09 ID:xSoPaWMQr.net
- git触らるようになりたいけどなれてないときにpushだかpullだかコミットだかして他人のソース破壊したら怖いなって思って手が出ない
- 59 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:43:47 ID:zQsU0upY0.net
- >>57
gitはエンジニアなら使えないとな
bitbucketはrubyの授業で使ってたが
- 60 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:44:34 ID:3SuwLtRo0.net
- >>58
意図的に壊すための操作をしないと壊れないし、それ以外の操作では万が一何かあっても戻す方法がある
GitHub の設定次第で意図敵に壊すための push もさせないようにできる
- 61 :以下、?ちゃんねるからVIPがお送りします:2020/05/11(月) 02:46:34 ID:3SuwLtRo0.net
- >>59
いまは学生でもプロってか仕事と同じ道具がほぼ制限なしで使えるからやるだけ得だよ
仕事なら有償の機能やソフトさえ学生なら安価か無償で使えるし
総レス数 61
15 KB
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★