pythonの勉強始めたんだがエラーが出て原因が分からん

1: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 01:24:26.743 ID:zQsU0upY0

エラー文見ろとかいうクソなことは言うなよ
見てるに決まってるググって調べてるに決まってるからな分かったな
実行文↓ コードは次に貼る

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: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 01:24:50.217 ID:zQsU0upY0

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()

 

8: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 01:25:57.920 ID:zQsU0upY0

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”)

 

10: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 01:27:08.403 ID:3SuwLtRo0
printcnt が何かわからないけど実装してる?typoとかじゃない?

 

12: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 01:27:46.704 ID:zQsU0upY0
問題はmodule.pyの@classmethodの部分かtest.pyのmp.Human.printcnt()なんだろうけどどういじってもエラー出る

 

13: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 01:28:37.686 ID:zQsU0upY0
indentは5chがクソだからコピペで反映されてないだけでちゃんとソースファイルではしてるから

 

14: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 01:29:03.192 ID:3SuwLtRo0
引数 cls がいるんじゃないの

 

15: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 01:31:12.969 ID:zQsU0upY0
>>14
関数定義にってこと?ちゃんと書いてるよ
呼び出しのときはインスタンスと同じようにclsにはクラス自身が自動的に入るから記述しなくてもいいはず

 

16: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 01:31:15.906 ID:IV623cMh0
Human.printcnt()
クラスに生えてるわけだしインスタンスからじゃなくてクラスから呼んでみれば?

 

18: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 01:34:00.932 ID:zQsU0upY0
>>16
Humanはクラス名だからクラスから呼び出してるはず

 

19: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 01:37:28.286 ID:IV623cMh0
>>18
mp.__class__.printcnt()
では?覚えてないが
>>18

 

20: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 01:38:14.493 ID:zQsU0upY0

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’

 

23: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 01:41:34.036 ID:IseBY0qTM
>>20のclsをselfにすればいいんじゃない?

 

24: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 01:44:57.673 ID:zQsU0upY0
>>23
ただの仮引数だし名前は関係ないんじゃね?
一応試したけどダメだった

 

21: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 01:40:31.626 ID:zQsU0upY0
print(mp.Human.count)だと上手くいく

 

25: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 01:52:13.230 ID:3SuwLtRo0
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: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 01:57:08.014 ID:zQsU0upY0
>>25
嘘だ

 

31: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 01:59:35.967 ID:3SuwLtRo0
>>26
できるならgistに貼るとかしてみて
たぶんインデント狂ってる気がするよ

 

32: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 02:01:37.073 ID:zQsU0upY0
>>31
github?
授業で使ったことあるけどよくわからん

 

28: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 01:57:42.943 ID:xsiNi/n1d
大体アナコンダ入れればなおる

 

29: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 01:58:35.083 ID:zQsU0upY0
>>28
使ってないけど一応入ってる

 

30: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 01:59:27.954 ID:hMbRd0AmM
>>29
使うか消すかしたほうがいいと思います

 

33: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 02:07:23.185 ID:3SuwLtRo0

https://wandbox.org/permlink/pu3VfKFJhvI6UAi8

mypackage/module.py をまとめて mp. 取るようにしたコード
これで実行できるからたぶんそっちのコードの何かが間違ってる

 

36: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 02:14:12.019 ID:3SuwLtRo0
Windows 環境分からないけどいちおう確認でPython -V でバージョン 3.7 以降くらいだよね
あと >>33 で貼ったコードをそのまま test2.py とかにして手元で実行したらどうなる?

 

37: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 02:16:33.263 ID:zQsU0upY0
>>33のmodule.pyの部分だけコピペしてみたけどやっぱりエラーでるな
処理系の問題?

 

34: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 02:10:04.797 ID:zQsU0upY0
imgurに張った
no title

 

38: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 02:16:45.408 ID:3SuwLtRo0
>>34
これはぱっと見あってる気がするから疑ってすまんかった

 

51: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 02:27:39.877 ID:3SuwLtRo0

>>48

つまりそもそも mypackage の中は完成品じゃなかったのね

>>34
VSCode の画像貼るときにエクスプローラーとかディレクトリ名も一緒に出してたらここで気づけたかも

設定できたはずだから調べてみるといいよ

 

53: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 02:29:10.426 ID:zQsU0upY0
>>51
ありがとう
ちなみにVScodeじゃなくてatomだぜ

 

55: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 02:31:25.577 ID:3SuwLtRo0
>>53
ほんとだ。アイコン見てなかった
見た目そっくりだなー

 

35: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 02:10:24.903 ID:3SuwLtRo0
ちなみにこれは貼るためにまとめただけで手元ではちゃんと mypackage/module.py と分離して動かしてる

 

39: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 02:17:22.085 ID:zQsU0upY0
Python 3.8.3 rc1 だった

 

41: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 02:21:17.931 ID:3SuwLtRo0

>>39
ためしに合わせてみようと思ったけど rc はちょっと面倒だな

安定版入ってない?

 

40: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 02:18:06.943 ID:3SuwLtRo0

まるっとコピって実行して動かないなら処理系かOS 依存な気がする

Mac とWandbox では動くからソースは問題ない気がする

 

42: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 02:21:25.261 ID:zQsU0upY0
やべえ
上手くいったけどマジであほみたいなミスで申し訳ない

 

43: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 02:22:19.830 ID:3SuwLtRo0
お。うまくいった?後学のために原因を教えていただきたく

 

48: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 02:24:39.447 ID:zQsU0upY0
>>43
後学もクソもないと思う
俺がクソみたいな見落とししてただけ
mypackageの中とカレントディレクトリの両方にmodule.pyが作られてて
そのカレントディレクトリの方のmodule.pyにだけprintcnt()関数を書いてた
当然importしてるのはmypackageの方だけだから見つかるはずがない
マジですまんかった

 

44: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 02:22:32.506 ID:zQsU0upY0
マジで1時間以上悩んでたのが馬鹿みたいだしこんな間抜けに突き合わせてしまって申し訳なさすぎる

 

49: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 02:26:36.053 ID:SIjuB1HPM
どうでもいいけど
パスのドキュメントってカタカナ入ってるのいつかバグおこしそう

 

52: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 02:28:19.406 ID:zQsU0upY0
>>49
俺も直したいんだけど、一回”document”に変更したらonedriveがバグったから触れないようにしてる

 

54: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 02:30:38.271 ID:3SuwLtRo0
>>49
>>52
うろ覚えだけど新しいWindows は標準のディレクトリに関してはエクスプローラーの見た目の言語と内部の名称は別で持ってるから正しく実装されてるソフトならあまり問題は出ないかも

 

56: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 02:35:11.946 ID:zQsU0upY0
>>54
c:\users\riku1\にdocument(エクスプローラでは”ドキュメント”)があることは確認したんだけど、onedriveディレクトリもあってその中に”ドキュメント”フォルダがあるんだよな
windowsだからonedrive使ってるけど結構異端なのか?

 

57: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 02:39:53.124 ID:3SuwLtRo0

>>56
あ。ちゃんと見てなかったわ。ぼけぼけっすね

異端と言うならソースはOneDrive じゃなくてGit で管理していこう。とかになるな。いまはGitHub のほとんどの機能が無償で使えるから触れるようになるといいよ

 

59: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 02:43:47.066 ID:zQsU0upY0
>>57
gitはエンジニアなら使えないとな
bitbucketはrubyの授業で使ってたが

 

61: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 02:46:34.823 ID:3SuwLtRo0

>>59
いまは学生でもプロってか仕事と同じ道具がほぼ制限なしで使えるからやるだけ得だよ

仕事なら有償の機能やソフトさえ学生なら安価か無償で使えるし

 

11: 以下、5ちゃんねるからVIPがお送りします 2020/05/11(月) 01:27:37.832 ID:TUrDVzAyr
エラーの原因は3つしかない。
勉強不足、調査不足、仮定不足。

引用元

管理人からひと言

あるある

関連記事

  1. プログラミング初心者だけどWEBフレームワーク何使えばいいか悩んでる

  2. 真面目な話、これからプログラマーになる奴はJavaScriptだけ覚えればいいのでは?

  3. デスマーチの原因は「オブジェクト指向」だった

  4. プログラムよくわかってないんだけどオブジェクト指向で作っておいた小さなパーツを組み合わせてプログラム…

  5. 【悲報】インフラエンジニアぼく、プログラマーの平均年収を調べてガチで号泣してしまう………………

  6. PythonとJavaとC言語使いこなせてAWSも使えるワイの市場価値w

  7. 【悲報】ぼくガイジRuby on Railsの授業で環境構築ができずに詰む

  8. プログラミングを学びたいのだが、Pythonってのをやればいいのか?

  9. オブジェクト指向のディレクトリ構造の調査と設計

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

最近の人気記事

おすすめ記事

  1. カテゴリ_software
  2. カテゴリ_service
  3. カテゴリ_働き方

新着記事

  1. 【IT】Apple、レトロゲーム機のエミュレータアプリにApp Storeを開放…
  2. Windowsに「デフォルトのブラウザをMicrosoft Edgeから変更でき…
  3. OpenAI日本法人に「AWSジャパン前社長」が移籍 4月中旬開設の東京オフィス…
  4. ウエスタンデジタル、業界初“4TB”のSDUCカード 2025年に発売予定
  5. 【IT】NEC「Aterm」シリーズ59製品に脆弱性 IPAなどが注意呼びかけ …

ボンブの戯言

  1. 【ボンブの戯言】ITエンジニアがフリーランスになるときに考える・準備すること
  2. 【ボンブの戯言】ITエンジニアは、なぜうつ病になるのか
  3. 【ボンブの戯言】フリーランスが払う税金など6選!私たちはこんなに支払っている!
  4. 【ボンブの戯言】サーバーって何なの(オンプレに限る)
  5. 【ボンブの戯言】はじめました。
PAGE TOP