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

1 名前:一般よりも上級の名無しさん 投稿日時: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 名前:一般よりも上級の名無しさん 投稿日時: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()

3 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 01:25:04.283 ID:6CegeQDLd
リクくんドンマイ………
4 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 01:25:20.807 ID:xsiNi/n1d
型がまちがってんじゃね
5 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 01:25:49.617 ID:MP0WiG8G0
pornhubに見えた
6 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 01:25:57.692 ID:G0qoyYq00
リクくん可愛い
7 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 01:25:57.912 ID:WeVWtL9y0
riku1
8 名前:一般よりも上級の名無しさん 投稿日時: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")

9 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 01:26:03.063 ID:qMj+MsuBr
インデントがおかしいからさ~
構文チェッカを使いなよう
10 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 01:27:08.403 ID:3SuwLtRo0
printcnt が何かわからないけど実装してる?typoとかじゃない?
11 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 01:27:37.832 ID:TUrDVzAyr
エラーの原因は3つしかない。
勉強不足、調査不足、仮定不足。
12 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 01:27:46.704 ID:zQsU0upY0
問題はmodule.pyの@classmethodの部分かtest.pyのmp.Human.printcnt()なんだろうけどどういじってもエラー出る
13 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 01:28:37.686 ID:zQsU0upY0
indentは5chがクソだからコピペで反映されてないだけでちゃんとソースファイルではしてるから
14 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 01:29:03.192 ID:3SuwLtRo0
引数 cls がいるんじゃないの
15 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 01:31:12.969 ID:zQsU0upY0
>>14
関数定義にってこと?ちゃんと書いてるよ
呼び出しのときはインスタンスと同じようにclsにはクラス自身が自動的に入るから記述しなくてもいいはず
16 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 01:31:15.906 ID:IV623cMh0
Human.printcnt()
クラスに生えてるわけだしインスタンスからじゃなくてクラスから呼んでみれば?
18 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 01:34:00.932 ID:zQsU0upY0
>>16
Humanはクラス名だからクラスから呼び出してるはず
17 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 01:31:24.236 ID:z4N+O0zDM
聞く態度ゴミすぎる
誰がお前に教えたがるのか
20 名前:一般よりも上級の名無しさん 投稿日時: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 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 01:41:34.036 ID:IseBY0qTM
>>20のclsをselfにすればいいんじゃない?
24 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 01:44:57.673 ID:zQsU0upY0
>>23
ただの仮引数だし名前は関係ないんじゃね?
一応試したけどダメだった
21 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 01:40:31.626 ID:zQsU0upY0
print(mp.Human.count)だと上手くいく
22 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 01:41:22.266 ID:qfmh8OHg0
詳しくないけどHumanじゃprintcnt使えないってことじゃないの?
27 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 01:57:28.525 ID:P1WcDAp+M
すまん嘘だったわ
28 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 01:57:42.943 ID:xsiNi/n1d
大体アナコンダ入れればなおる
29 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 01:58:35.083 ID:zQsU0upY0
>>28
使ってないけど一応入ってる
30 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 01:59:27.954 ID:hMbRd0AmM
>>29
使うか消すかしたほうがいいと思います
34 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 02:10:04.797 ID:zQsU0upY0
imgurに張った
レス34番の画像サムネイル
38 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 02:16:45.408 ID:3SuwLtRo0
>>34
これはぱっと見あってる気がするから疑ってすまんかった
39 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 02:17:22.085 ID:zQsU0upY0
Python 3.8.3 rc1 だった
41 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 02:21:17.931 ID:3SuwLtRo0
>>39
ためしに合わせてみようと思ったけど rc はちょっと面倒だな

安定版入ってない?

40 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 02:18:06.943 ID:3SuwLtRo0
まるっとコピって実行して動かないなら処理系かOS 依存な気がする

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

42 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 02:21:25.261 ID:zQsU0upY0
やべえ
上手くいったけどマジであほみたいなミスで申し訳ない
43 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 02:22:19.830 ID:3SuwLtRo0
お。うまくいった?後学のために原因を教えていただきたく
48 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 02:24:39.447 ID:zQsU0upY0
>>43
後学もクソもないと思う
俺がクソみたいな見落とししてただけ
mypackageの中とカレントディレクトリの両方にmodule.pyが作られてて
そのカレントディレクトリの方のmodule.pyにだけprintcnt()関数を書いてた
当然importしてるのはmypackageの方だけだから見つかるはずがない
マジですまんかった
44 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 02:22:32.506 ID:zQsU0upY0
マジで1時間以上悩んでたのが馬鹿みたいだしこんな間抜けに突き合わせてしまって申し訳なさすぎる
45 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 02:22:39.277 ID:FwbFZ6a/0
引数不足じゃないの
46 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 02:23:17.797 ID:FwbFZ6a/0
と思ったら終わってた
47 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 02:23:38.570 ID:yFCDTKWe0
スペースが全角だったか
49 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 02:26:36.053 ID:SIjuB1HPM
どうでもいいけど
パスのドキュメントってカタカナ入ってるのいつかバグおこしそう
52 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 02:28:19.406 ID:zQsU0upY0
>>49
俺も直したいんだけど、一回"document"に変更したらonedriveがバグったから触れないようにしてる
50 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 02:26:55.277 ID:xSoPaWMQr
稀によくあるよそれ気にすんな
58 名前:一般よりも上級の名無しさん 投稿日時:2020/05/11(月) 02:41:09.663 ID:xSoPaWMQr
git触らるようになりたいけどなれてないときにpushだかpullだかコミットだかして他人のソース破壊したら怖いなって思って手が出ない

コメント一覧

タイトルとURLをコピーしました