2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

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 ★