[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 03/24 12:06 / Filesize : 298 KB / Number-of Response : 1030
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました



1 名前:デフォルトの名無しさん [2019/02/04(月) 21:22:10.08 ID:9MrdxUVg.net]
★当スレにRubyのソースコード類を書くことを禁ず
☆Ruby等、Pythonではないプログラミング言語での回答類を書くことも禁ず

このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。

エラーを解決したいときはエラー表示や環境(バージョン/IDEまたはcommand line/OS)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>985 辺りで

前スレ
くだすれPython(超初心者用) その40
mevius.5ch.net/test/read.cgi/tech/1542874174/


◆PythonのHome Page
www.python.org/

◆まとめwiki
ttp://python.rdy.jp/

◆Pythonのソースコードをそのまま5ちゃんにコピペすると
  インデントが崩れるので
  こういうところ↓にはってきてください
ttp://ideone.com/      Pythonするにはぷち手間あるのがめんどうかなぁ
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste

792 名前:デフォルトの名無しさん [2019/03/11(月) 05:23:59.55 ID:pTTv+VC9.net]
vecの作り方によっては
mat@(vec.T)

793 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 07:42:02.40 ID:R4ZESWdO.net]
pythonできればc#もできますか?
pythonでゲームと、c#でwindowsのソフト両方を使ってますわ

794 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 08:49:44.07 ID:Rf81Fxun.net]
フォルダを空にしようと思いましたが、うまく行きません
shutil.rmtree(args.sample_dir)
os.mkdir(args.sample_dir)

os.mkdir(args.sample_dir)の部分で
PermissionError: [WinError 5] アクセスが拒否されました。: 'test/sample_img'
というエラーが出ます

ディレクトリが消えているので
shutil.rmtree(args.sample_dir)
はうまく行っているようです

このやり方はあまり良くないのでしょうか?

795 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 08:50:31.50 ID:IpMePMuQ.net]
>>770
すみませんミスタイプしてました。求めたい結果は
result=[mat@v for v in vec]
ですね

796 名前:デフォルトの名無しさん [2019/03/11(月) 12:16:20.15 ID:hfHU2O5u.net]
>>773
forいらんで

797 名前:デフォルトの名無しさん [2019/03/11(月) 12:19:13.01 ID:hfHU2O5u.net]
こういうことかな
(mat@(vec.T)).T

798 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 17:11:44.97 ID:mNeqJkGU.net]
>>772
os.mkdirは途中に存在しないフォルダがあるとエラーしてしまうので
「os.makedirs()」をつかってみそ

799 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 17:33:25.52 ID:pvnV5rIH.net]
inputした数字をそれぞれリスト化(aリスト,bりスト)したい。

入力(1行目は入力回数)
3
100 2
3 42
52 63

出力
[100, 3, 52] [2, 42, 63]

自分が作成したコードはinputをrangeで回してますが、inputを内包表記で1行で済ませる方法が分かりませんでした。
内包表記・関数でもうすこし短く出来ませんか?
cunt = int(input())
a_list = []
b_list = []
for i in range(cunt):
 a,b = [int(x) for x in input().split()]
 a_list.append(a)
 b_list.append(b)
print(a_list,b_list)

800 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 17:36:22.93 ID:mNeqJkGU.net]
>>777
  >>422



801 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 17:38:42.78 ID:mNeqJkGU.net]
とちゅうでおくってしまった
>>422がイイ(・∀・)こといってる気がするんだが
なんとか利用できないかな

802 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 19:53:46.76 ID:iNskGddB.net]
count = int(input())
temp = [None for x in range(count)]
for i in range(count):
  temp[i] = input().split()
else:
  a_list = [int(x[0]) for x in temp]
  b_list = [int(x[1]) for x in temp]
  print(a_list,b_list)

というかコードを書く前にcuntを辞書で引け
話はそれからだ

803 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 19:57:35.25 ID:PGatxMde.net]
クリトリスですか?なるほど…

804 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 20:39:01.91 ID:mSdvFdhb.net]
print(*map(list, zip(*[map(int, input().split()) for i in range(int(input()))])))

805 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 21:57:53.69 ID:pvnV5rIH.net]
セクハラ通り越して放送禁止用語レベルだったんですね

>>780 こういうループの発想が湧きませんでした 参考にさせて頂きます

>>782 コレ使ってみます 関数1個1個はナントナク分かりましたが、何重も連なると自分のレベルは難しいです 時間かけて解読してみます

>>779-782 皆さんありがとうございました

806 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 22:05:12.11 ID:IpMePMuQ.net]
>>775
ディメンションがちゃうで言われますね
つまり座標配列全てにアフィン変換したいって事なんですがnumpyじゃ無理なんかな?

807 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 23:20:05.55 ID:GdRfR4uu.net]
Ruby のArray#zip, transpose で、配列・行列の縦横変換できる。
zip の引数に、幾つかの配列(配列のリスト)を指定できる

p [1,2,3].zip([4,5,6], [7,8,9])
# => [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

808 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 23:38:19.16 ID:qe97t/2K.net]
>>785
グロ

809 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 23:54:59.52 ID:0HIo0fVP.net]
>>780
>コードを書く前にcuntを辞書で引け
ゆとり教育では辞書使うなんて難易度の高いことはしない

810 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 00:08:58.95 ID:KQFIYqiK.net]
>>784
"アフィン変換 numpy"でググればなんか希望の物が引っかかるんじゃないのか
numpyを使ってアフィン変換をするライブラリなんかは誰か作っている気がする



811 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 01:19:04.31 ID:Tg1PBlZE.net]
>>780 cunt 辞書ひいた。 笑っちゃったよ。

1. a stupid or unpleasant person
2. -> HUMAN
a woman's vagina =sex organ

812 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 01:43:49.00 ID:Tg1PBlZE.net]
>>789 同じロングマンなんだけどなんかニュアンスが違うな。

cunt
kʌnt
名 C《タブー》
1 《女性性器を意味する非常に侮蔑ぶべつ的な語》
2 《嫌悪感・怒りを感じる女性に対して用いる非常に侮蔑ぶべつ的な表現》

大辞林
カント 女性の性器。

コトバンク
[名]((卑))
1 たちの悪いやつ;いやなやつ
Don't be a silly cunt.
くだらんことを言うな.
2 女性器;性的対象としての女性, あばずれ;性交.
[オランダ語kunte←フランス語]

Oxford
vulgar slang
1 A woman's genitals.(性器)
1.1 An unpleasant or stupid person.

Origin
Middle English: of Germanic origin; related to Norwegian and Swedish dialect kunta, and Middle Low German, Middle Dutch, and Danish dialect kunte.

813 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 12:29:06.26 ID:Le2Xhtue.net]
引数のイメージなんですが、引数は材料で、材料を関数で調理器にかけるイメージでしょうか?

814 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 12:30:30.49 ID:F9OOaHwl.net]
戻り値は?

815 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 12:33:21.35 ID:c3A0Gx7w.net]
ひき肉を作る機械のイメージでええんやないの
上に入れる肉が引数、機械が関数、出てきたひき肉が戻り値

816 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 12:36:33.66 ID:rf03pH6k.net]
引数に肉しか入れてないのに勝手に台所のコショウが減ったり電気使われたりするのが副作用

817 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 12:39:17.36 ID:Le2Xhtue.net]
ひき肉が引数、調理器が関数、バーグが戻り値
ありがとうござ

818 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 12:41:44.81 ID:Le2Xhtue.net]
selfの意味ってなんですか?
単に関数を作成したときにデフォルトでついてくる引数という感じでしょうか。
だとしたらなんのためにですか?

読んでみたんですが、イマイチイメージが、、、

819 名前:デフォルトの名無しさん [2019/03/12(火) 12:52:43.68 ID:uvkzn3tS.net]
>>796
selfは関数ではなくクラスのメソッドに付ける
Javaのthisみたいなもので、メソッドを呼び出したオブジェクト自身を受け取るための引数
メソッド内でメンバ変数を参照したり別のメソッドを呼び出したりする時にself.〜 として使う

820 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 12:58:27.33 ID:R/A89vkp.net]
横からすいません
self、self以外を指定することはあるのでしょうか?



821 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 13:11:28.09 ID:rdaDEiid.net]
>>798
慣例的なもので言語制約ではない、が補完などに影響するかも
クラスメソッドではクラスが割り当てられるのでclsが使われる

822 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 13:16:23.13 ID:rf03pH6k.net]
hoge.myMethod(fuga, piyo)
myMethod(hoge, fuga, piyo)
みたいなイメージ

823 名前:デフォルトの名無しさん [2019/03/12(火) 13:20:45.17 ID:6Uu2j9Xc.net]
>>784
馬鹿には無理

824 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 13:36:24.76 ID:R/A89vkp.net]
>>799
ありがとうございます

825 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 13:58:38.98 ID:c3A0Gx7w.net]
そもそも何でメソッドの引数にオブジェクト自身を渡すんやろうか
obj.method()みたいに呼び出すなら、どのオブジェクトをメソッドに渡すかわ明らかなんだから、省略できそうなのに

826 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 14:09:51.25 ID:R/A89vkp.net]
>>803
こういう渡し方をする言語、python以外にもあるんでしょうか

827 名前:デフォルトの名無しさん mailto:s []
[ここ壊れてます]

828 名前:age mailto:2019/03/12(火) 14:19:35.49 ID:rdaDEiid.net [ >>803
それはPythonのオブジェクト指向の実装方法とか基本理念によるもの、属性解決については
https://docs.python.org/ja/3/howto/descriptor.html#definition-and-introduction
self.meth()とcls.meth(self)の等価性を明示するみたいな論調も記憶にあるが公式なソースは忘れた ]
[ここ壊れてます]

829 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 14:39:35.59 ID:5JRn7Uik.net]
>>804
perl

830 名前:803 mailto:sage [2019/03/12(火) 14:48:12.21 ID:rdaDEiid.net]
selfに対する直接の説明としてはちょっとアンカーが適切ではないか
https://docs.python.org/ja/3.5/howto/descriptor.html#functions-and-methods
「関数に基づく環境の上に構築」って所がミソやね、後付けと言われる所以



831 名前:デフォルトの名無しさん [2019/03/12(火) 16:34:54.17 ID:8KtfShI4.net]
>>804
tcl

832 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 16:40:24.68 ID:Le2Xhtue.net]
>>797
よくわからないけどありがとうひき肉おじさん

833 名前:デフォルトの名無しさん [2019/03/12(火) 17:17:23.48 ID:8KtfShI4.net]
わからないならレスしないでくださいうざいだけです

834 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 17:19:11.50 ID:Le2Xhtue.net]
インスタンス作成っていうのはメモリ上に領域を確保する作業ってことでいいんでしょうか。

835 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 17:21:39.56 ID:zkYMqbGV.net]
なにそれ
他のコード作業だとメモリを使用しないとでもw

836 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 17:23:18.47 ID:zkYMqbGV.net]
クラス定義内に大量の関数定義を入れると、そのクラスがインスタンス化されたときに、インスタンスに自我意識が生まれます

837 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 18:13:57.38 ID:rf03pH6k.net]
俺も3食インスタンスラーメンです

838 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 19:11:13.53 ID:qLQHaQxA.net]
selfはあってもなくても、どっちでも
よかったかもしらんが、
クラス外の普通の関数でも、いきなり
クラスのフレンド関数のようにしやすいといった、
モンキーパッチ的な利点もあるし、
一長一短。

839 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 05:29:22.97 ID:Z4mQGBB0.net]
pythonのselfの超簡単なサンプルを教えてください
調べてるんですが、わかりにくくて、、、

840 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 06:11:09.78 ID:nAhixTo8.net]
サンプルって…メソッドならインスタンスを受け取るために必須なだけだ
倣うほどの規範は無いと思うけど、オブジェクト指向が理解できてないの?



841 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 07:18:13.39 ID:zpkiSS8W.net]
>>817
オブジェクト指向の理解というよりPythonの仕様の気が・・

横なんですけど、例えばあるクラスを継承したクラスがいくつかあって、それぞれで同じメソッドをオーバーライドしている時、Pythonは渡されたインスタンスを見てどのメソッドを呼び出すか決めているんですか?
つまりインスタンスとメソッドは別々に管理されていて、呼び出す時にインスタンスとメソッドは結び付けられるとか。

842 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 07:28:44.40 ID:Z4mQGBB0.net]
>>817
オブジェクト指向はなんとなく
インスタンスを受け取るというのはよくわからないのですが

843 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 07:44:07.11 ID:zpkiSS8W.net]
>>819
私もです、>>807さんのリンクや後付け・・から思うに、
オブジェクト内にメソッドがあるのではなく、メソッドはオブジェクトの外に関数としてあって、その関数に対して「このオブジェクトのメソッドの様に振る舞え」と指示しているのかな、と感じました。

844 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 10:42:08.19 ID:Nk0VyZbv.net]
配列hogeを作成し、
print(hoge)を実行した時、[1. 2. 3. 4. 5.]の様に
数字にピリオドがついた時は浮動小数点型の配列なのでしょうか?
浮動小数点型の場合、整数型の配列にする方法はありますでしょうか?

845 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 10:51:02.04 ID:x5gb1xdG.net]
>>821
list(map(int,hoge))

846 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 11:00:58.72 ID:Nk0VyZbv.net]
>>822
ピリオドが無くなりました!
ありがとうございます

847 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 11:08:04.74 ID:Z4mQGBB0.net]
class Cat(object):
def __init__(self, name, weight):
self.name = name
self.weight = weight
このコードのselfはどういう意味なんでしょうか?
猫というオブジェクトの属性を表現しているクラスのようです

848 名前:デフォルトの名無しさん [2019/03/13(水) 11:19:10.70 ID:Y4yR4bDO.net]
>>798
二項演算ならself使うと分かりにくいのでアリ、アプリカンド/アプリケータなど
self/other派も居るが

有名ライブラリだとmpmathがctx(計算の文脈、精度とか)渡してるね

849 名前:デフォルトの名無しさん [2019/03/13(水) 11:20:56.58 ID:Y4yR4bDO.net]
x/yも見掛けるな
同種同士の同等な二項演算の定義に主体が入り込むのは気持ち悪いと思うよやっぱ

850 名前:デフォルトの名無しさん [2019/03/13(水) 11:34:37.37 ID:imKqJmF7.net]
>>824
Cat(‘neko’, 5) などと書くと__init__が呼び出されてselfには作成されたCatのインスタンスが渡される
つまり
c = Cat(‘neko’, 5)
とした時cとselfは同じものを指す



851 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 12:31:52.80 ID:Z4mQGBB0.net]
selfの意味がいまいち理解できていないのですが、引数の設定されたクラスや関数自身を表すということですよね
で、self自体を出力してみました
class classname:
def defname(self):
print(self)
s =classname()
s.defname()

<__main__.classname object at 0x03EE2F30>
selfを設定しているのは関数なのですが、これでは関数自身ではなく、クラス自身ではないですか?
また、これはどういったときに役立つのですか?

環境はidleです

>>827
ありがとうございます
読み解いてみます

852 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 12:44:16.23 ID:Ux8DzXrZ.net]
>>828
>引数の設定されたクラスや関数自身を表すということですよね
うん

5ちゃんでは
インデント(連続してる半角スペース)が消えちまうので
めんどうでも全角スペース使って書きなおす(半角スペースを全角スペースに置換でおk)か
1に書いてあるような、ソースコード貼る専用のうpろだにうp

853 名前:デフォルトの名無しさん [2019/03/13(水) 13:38:08.75 ID:imKqJmF7.net]
>>828
メソッドの中から別のメソッドを呼びたい時にselfが無いと詰む

854 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 15:00:34.67 ID:Ux8DzXrZ.net]
>>828
2系でやったら違う結果になるぞ

855 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 15:57:20.28 ID:nAhixTo8.net]
>>828
はい、いいえ。通常defで定義した関数自身を第1引数が表す事はありませんし
ついでにクラスへ定義した関数は、メンバー関数あるいはメソッドと呼びます
またクラス(型)も渡されていません、それはインスタンス(実体)です
オブジェクトとも呼ばれますけど意味が文脈に左右されるので置いといて
クラスメソッド(@classmethod)と修飾したときは、クラスが渡されます

文字列でいうならクラスはstr、'ABC'など具体的な物がインスタンスに相当し
その長さなどがインスタンスの属性と言えます(Pythonだと関数で取得するが

selfは>>797でも回答されるように他言語の(暗黙的に参照可能な)thisと同等で
その宣言の必要性は>>807に対する>>818>>820の理解…は齟齬が生じる所もあるが
概念的にはメソッドだけども実装的には関数なので、()と呼び出された時ではなく
実体から関数が.で属性参照された時に、結び付けられたメソッドが生成されます

一連のレスからすると、引数が表すものに関数自身(callee)が出てくる辺り
メソッド以前に関数の定義・呼び出し自体の理解も怪しいのではなかろうか?
関数の操作対象として構造物というか実体が第1引数に渡されているのだが…

856 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 16:27:27.93 ID:M+m6pFpm.net]
はい(いいえ)

857 名前:デフォルトの名無しさん [2019/03/13(水) 17:46:31.02 ID:h9UFHds/.net]
そやで、ちゃうで

858 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 17:48:54.93 ID:MhYZY5Aj.net]
はいいいえ

859 名前:デフォルトの名無しさん [2019/03/13(水) 18:46:52.20 ID:gkV5NrkZ.net]
ちゃうちゃうちゃうんちゃう

860 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 19:03:05.32 ID:jL6M634A.net]
def yes(arg= None):
____print()



861 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 19:58:39.06 ID:26FDLpbf.net]
hoge = "ほげほげ!"
if hoge == "ほげほげ":
print("ほげほげ!)
else:
pinrt("げほげほ!")

862 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 20:00:19.07 ID:Ux8DzXrZ.net]
>>838
”がたりてない

863 名前:デフォルトの名無しさん [2019/03/13(水) 20:21:08.59 ID:1Wup6Az1.net]
Pythonはswitch文が無いのが不満だったけど辞書使えば同じ様な事が出来ると最近気づいた

一番はswitchが必要になるロジックを組まない事だろうけど

864 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 20:32:12.62 ID:Z4mQGBB0.net]
↑selfについて回答ありがとうございました

865 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 20:34:50.72 ID:Z4mQGBB0.net]
class className():
def __init__(self, strA, strB):
self.str1 = strA
self.str2 = strB

test = className("Hello", "World!")
print(test.str1)
print(test.str2)

まだselfの意味について理解できていないので教えてください
クラスをインスタンス化したときに引数を設定することでinitが呼び出され、hellwとworld引数が、str1とstr2に代入されるということだと思います

この場合のselfはどんな役割をしているのですか?
selfをはずすと動作はしないようです
init関数自身とは?

866 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 20:34:55.83 ID:Z4mQGBB0.net]
class className():
def __init__(self, strA, strB):
self.str1 = strA
self.str2 = strB

test = className("Hello", "World!")
print(test.str1)
print(test.str2)

まだselfの意味について理解できていないので教えてください
クラスをインスタンス化したときに引数を設定することでinitが呼び出され、hellwとworld引数が、str1とstr2に代入されるということだと思います

この場合のselfはどんな役割をしているのですか?
selfをはずすと動作はしないようです
init関数自身とは?

867 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 20:41:11.30 ID:Z4mQGBB0.net]
インスタンス変数を使うときにselfをつけることですが、そういうおまじないということですか?

868 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 20:47:03.94 ID:Ux8DzXrZ.net]
>>829を読んでも理解してないということはよくわかった

869 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 21:14:16.67 ID:nAhixTo8.net]
>>842-843
まず引数を設定しようがしまいがインスタンス化したら初期化のために__init__は呼ばれる
selfはselfを書いた関数自身ではなく、メソッドとして属するクラスのインスタンスを表す
selfから属性参照しなければstr1やstr2はローカル変数になって抜けたら破棄されてしまう

結果としてtestに代入されるインスタンスを参照するために必要だから書く

870 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 21:16:12.72 ID:ZMFJ1a5n.net]
>>843
俺も初心者だけど、Pythonにはクラスオブジェクトってのがあつて、クラス定義が実行されるとそのクラスオブジェクトってのが作られるらしいぞ。クラス定義が実行させるって何ぞ?と思ったけどそうらしい。

でインスタンスはそのクラスオブジェクトから作られるらしいぞ。
つまりそのinitはコンストラクタというよりクラスからクラスオブジェクトを作るためのinitだったりするかも。
self渡す必要があるってことは、そのinitは他の言語じゃプログラマが意識しない部分の可能性。クラスのインスタンス化の一層下にあるのかな?



871 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 21:22:48.95 ID:M+m6pFpm.net]
シンタックスは
def self.__init__(strA, strB):
とかではダメだったの?
書いてもないのに第一引数にself入ってくるのと大差なくない?

872 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 21:27:46.46 ID:ZImJqTUY.net]
>>824
self が付いているのは、インスタンス変数じゃないの?
Ruby では、@ がインスタンス変数

class Cat
def initialize( name, weight )
@name = name
@weight = weight
end
end

p Cat.new( "bob", 5 )

# <Cat: @name="bob", @weight=5>

873 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 21:43:36.51 ID:nAhixTo8.net]
>>848
Pythonに複合文としてのメソッド定義はなく、クラスに書いた関数がメソッドとして扱われる
そのメカニズムはHowToでも記される、参照した属性がクラススコープで定義された関数なら
インスタンスと関数が参照されたバウンドメソッドオブジェクトを返し、__call__が呼ばれる

874 名前:847 mailto:sage [2019/03/13(水) 21:53:09.68 ID:ZImJqTUY.net]
Ruby では、@ がインスタンス変数で、

self は、クラス直下ではクラスを表し、メソッド内では、インスタンスを表す。
コンテキスト(文脈)によって、self の意味は変わる。
また特異クラスも、よく出てくる

class Cat
p self #=> Cat

def initialize( name, weight )
@name = name
@weight = weight

p self #=> <Cat: @name="bob", @weight=5>
end
end

Cat.new( "bob", 5 )

Ruby で、オブジェクト指向・関数型をみっちり学んでから、
Python, JavaScript を学ぶ方がよい

875 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 21:55:25.72 ID:bUFEpZHr.net]
>>849>>851
うるっせえな!
スレタイ読めねーのかカス!!
死ね!死んで消えろゴミ!!

876 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 03:27:13.64 ID:4WTRjlYm.net]
相手にするからつけあがるんだよ

877 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 03:37:18.44 ID:nL4uJ2zh.net]
終わりのないのが『終わり』
それが『RWBY』

878 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 08:25:07.71 ID:/JPtJCUD.net]
a = 'hoge'
type(a)

これを実行すると<class 'str'>が表示される
これは変数aが指してるオブジェクトの型がstr型という意味でいいんだよね

一方で、文字列はシーケンス型でもあるからインデックスでアクセスしたり、スライスしたり出来る
この文字列がシーケンス型というのはpython上でどうやって確認するんや

879 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 08:34:53.42 ID:lGFaI2Uv.net]
>>855
シーケンス型の実体は存在しない
失敗しないことを天に祈りつつ勇敢にforに投入する、がPythonの思想的には正しい
厳密にやりたいなら型アノテーションでSequenceあるけど、型アノテーションなんか誰も使ってない

880 名前:デフォルトの名無しさん [2019/03/14(木) 10:12:27.31 ID:QThoqyRe.net]
>>855
hasattr(a, ‘__iter__’)
Pythonではシーケンス型の事をiterableなオブジェクトという
forにiterableを渡すと__iter__()が呼ばれるのでこれの有無を確認すれば分かる



881 名前:デフォルトの名無しさん [2019/03/14(木) 10:14:27.51 ID:QThoqyRe.net]
>>855
それとiterableであることとスライスできるのは別の機能
インデックスやスライスは__getitem__()で実装される

882 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 11:06:23.42 ID:/JPtJCUD.net]
レスありがとう

俺はstr型はシーケンス型を継承してるから、シーケンス型のようにも振る舞うと勝手に思ってたけど違うのね

str型はiterableな属性を持ってるから、for文に渡して繰り返しの処理が出来るというのはわかった

それなら、str型がsequenceableな属性を持ってるからスライスやインデックスのアクセスが出来るというのなら理解できるんだけど、シーケンス型で属性じゃないのよね

なんか混乱してきたわ(´・ω・`)

883 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 11:16:27.87 ID:r+Z4K3kn.net]
>>859
IterableもSequenceと同じく、クラスが満たすべき性質がドキュメント上や型アノテーションで定義されているだけの実体のない型だ
Pythonではそういう実体のない(ドキュメントや型アノテーションにしか登場しない)仮想的な型のことを一般にプロトコルと呼ぶ
Javaのinterfaceに近い概念だが、interfaceとは違ってオブジェクトに付随する型としての実体を持たないという点が異なる

884 名前:デフォルトの名無しさん [2019/03/14(木) 11:26:52.83 ID:RE7f17De.net]
>>859
pythonの場合、forに渡せるとかの機能は単に__xxx__という名前の特殊メソッドが実装されているかどうかで決まる

885 名前:デフォルトの名無しさん [2019/03/14(木) 11:41:55.90 ID:jNBQt8MR.net]
>>860
Pythonにはstr、listというオブジェクトは存在するが、sequence というオブジェクトは存在しない
だが、str 、listどちらもsequence型である

886 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 12:41:19.77 ID:r+Z4K3kn.net]
>>862
だからそう言ってるつもりだが

887 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 12:47:55.74 ID:YiVNNcx0.net]
じゃあjavaよりgoのが近いんじゃ?

888 名前:デフォルトの名無しさん [2019/03/14(木) 13:23:53.72 ID:jNBQt8MR.net]
>>863
適当にアンカーつけてレスしたんよ
なんかごめんな

889 名前:847 mailto:sage [2019/03/14(木) 13:28:05.85 ID:tsxAqnNH.net]
参考までに、Ruby では、Array -> Enumerable (子 -> 親)

自クラスに、each を定義して、Enumerable モジュールをinclude すれば、
Enumerable のすべてのメソッドが使える(mix-in)(内部イテレータ)

Enumerable とは繰り返しを行なうクラスのための Mix-in。
このモジュールの メソッドは全て、eachを用いて定義されているので、
インクルード するクラスには、eachが定義されていなければなりません

each を定義しない場合は、Enumerator というラッパークラスで、Enumerable のメソッドが使える(外部イテレータ)

外部イテレータは、Enumerator.next, rewind などで繰り返しを進めたり・巻き戻したり、制御できる

mix-in とは継承ではないけど、呼び出される関数探索の継承チェーンに割り込む機能。
Java のinterface みたいなもの。
Duck Typing と言って、そのメソッドに反応するかどうか

子 -> mix-in -> 親

890 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 13:31:58.94 ID:r+Z4K3kn.net]
>>864
goのは型が明示的にinterfaceを実装していなくても必要なメソッドがあれば受け入れるstructual subtypingという考え方
Pythonは duck typing なので本来はそれに近いのだが、型ヒントがstructual subtypingではなく明示的にクラスがインターフェイスを継承する必要がある
よってpythonにおいては型ヒントを考慮すればgoよりJavaに近い



891 名前:デフォルトの名無しさん [2019/03/14(木) 13:52:11.73 ID:q8OuUl64.net]
rubyをdisる訳じゃないけど
初心者でpython学習し始めたところなら
rubyと比べない方が良いよ
覚えることが増えるだけでメリット無いから

892 名前:デフォルトの名無しさん [2019/03/14(木) 13:56:28.26 ID:1qhaQ5mP.net]
これから試験受けるんだが落ちそう






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<298KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef