エラー文見ろとかいうクソなことは言うなよ
見てるに決まってるググって調べてるに決まってるからな分かったな
実行文↓ コードは次に貼る
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’
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()
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”)
関数定義にってこと?ちゃんと書いてるよ
呼び出しのときはインスタンスと同じようにclsにはクラス自身が自動的に入るから記述しなくてもいいはず
クラスに生えてるわけだしインスタンスからじゃなくてクラスから呼んでみれば?
Humanはクラス名だからクラスから呼び出してるはず
mp.__class__.printcnt()
では?覚えてないが
>>18
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’
ただの仮引数だし名前は関係ないんじゃね?
一応試したけどダメだった
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
手元でインデント正しく直して動かしたらこうなったよ
嘘だ
できるならgistに貼るとかしてみて
たぶんインデント狂ってる気がするよ
github?
授業で使ったことあるけどよくわからん
使ってないけど一応入ってる
使うか消すかしたほうがいいと思います
https://wandbox.org/permlink/pu3VfKFJhvI6UAi8
mypackage/module.py をまとめて mp. 取るようにしたコード
これで実行できるからたぶんそっちのコードの何かが間違ってる
あと >>33 で貼ったコードをそのまま test2.py とかにして手元で実行したらどうなる?
処理系の問題?
これはぱっと見あってる気がするから疑ってすまんかった
>>48
草
つまりそもそも mypackage の中は完成品じゃなかったのね
>>34
VSCode の画像貼るときにエクスプローラーとかディレクトリ名も一緒に出してたらここで気づけたかも
設定できたはずだから調べてみるといいよ
ありがとう
ちなみにVScodeじゃなくてatomだぜ
ほんとだ。アイコン見てなかった
見た目そっくりだなー
>>39
ためしに合わせてみようと思ったけど rc はちょっと面倒だな
安定版入ってない?
まるっとコピって実行して動かないなら処理系かOS 依存な気がする
Mac とWandbox では動くからソースは問題ない気がする
上手くいったけどマジであほみたいなミスで申し訳ない
後学もクソもないと思う
俺がクソみたいな見落とししてただけ
mypackageの中とカレントディレクトリの両方にmodule.pyが作られてて
そのカレントディレクトリの方のmodule.pyにだけprintcnt()関数を書いてた
当然importしてるのはmypackageの方だけだから見つかるはずがない
マジですまんかった
パスのドキュメントってカタカナ入ってるのいつかバグおこしそう
俺も直したいんだけど、一回”document”に変更したらonedriveがバグったから触れないようにしてる
>>52
うろ覚えだけど新しいWindows は標準のディレクトリに関してはエクスプローラーの見た目の言語と内部の名称は別で持ってるから正しく実装されてるソフトならあまり問題は出ないかも
c:\users\riku1\にdocument(エクスプローラでは”ドキュメント”)があることは確認したんだけど、onedriveディレクトリもあってその中に”ドキュメント”フォルダがあるんだよな
windowsだからonedrive使ってるけど結構異端なのか?
>>56
あ。ちゃんと見てなかったわ。ぼけぼけっすね
異端と言うならソースはOneDrive じゃなくてGit で管理していこう。とかになるな。いまはGitHub のほとんどの機能が無償で使えるから触れるようになるといいよ
gitはエンジニアなら使えないとな
bitbucketはrubyの授業で使ってたが
>>59
いまは学生でもプロってか仕事と同じ道具がほぼ制限なしで使えるからやるだけ得だよ
仕事なら有償の機能やソフトさえ学生なら安価か無償で使えるし
勉強不足、調査不足、仮定不足。
引用元
管理人からひと言
あるある
この記事へのコメントはありません。