暇つぶし2chat TECH
- 暇つぶし2ch950:デフォルトの名無しさん
19/03/16 22:11:31.40 431M+yCA.net
入門python3ってあんまりレビューが良くないね

951:847
19/03/16 23:16:52.98 1E15fsAJ.net
インスタンスや、self がわからないの?
オブジェクト指向の基本だよ
self は、そのインスタンスを指す。
Ruby では、
class Cat
def initialize( name, weight )
@name = name
@weight = weight
end
end
p bob = Cat.new( "bob", 5 )
p alice = Cat.new( "alice", 4 )
new で、Cat というひな形から、各インスタンスを作る(実体化)
bob は、<Cat: @name="bob", @weight=5>
alice は、<Cat: @name="alice", @weight=4>
Rubyの、@name = name が、Python では、self.name = name になる。
Rubyではインスタンス変数は、@ で表すけど、pythonではself を付ける
インスタンス変数とは、各インスタンスで異なる部分。
一方、クラス変数とは、そのクラス(すべてのインスタンス)で共通の部分。
Rubyでは一々、selfを付けなくても良いように、Rubyの実装を、かなり頑張って作っている。
self.name よりも、@name の方がわかりやすいから!
オブジェクト指向・関数型は、Rubyで学んだ方がよい。
Python, JavaScript, Kotlin にも応用できるから

952:デフォルトの名無しさん
19/03/16 23:27:14.53 DylECkfT.net
>>927
> self.name よりも、@name の方がわかりやすいから!
アピールポイントそれだけ?
@がメンバ変数を表すなんて知らなきゃ分からんし、直感でも何となく察せるself.~の方が分かりやすいと思うが

953:デフォルトの名無しさん
19/03/16 23:28:24.96 1G1aklbm.net
自分もPython初心者だけど
URLリンク(www.python-izm.com)
ここのサイトめちゃくちゃわかり易かったので載せときたす。

954:デフォルトの名無しさん
19/03/16 23:35:31.32 8PxPizsB.net
>>927
さすがクソ記号言語perlの末裔w
一生記号暗記してろ。
そして死ね。

955:デフォルトの名無しさん
19/03/17 00:17:39.16 oRKycfKe.net
>>927
なんでJavaないの? 理解できなかったの?

956:デフォルトの名無しさん
19/03/17 01:42:26.25 ttbbgHOa.net
chromeの拡張機能を自動操作することは可能ですか?

957:デフォルトの名無しさん
19/03/17 02:01:28.71 QLspzkYx.net
>>937 ちらっとのぞいてみたが、目次が良くないね。
最初から順を追って進めて行く人にとっては良いかもしれないけど。

958:デフォルトの名無しさん
19/03/17 02:05:09.07 nMZPqZIX.net
937に期待

959:デフォルトの名無しさん
19/03/17 02:05:36.23 pyRBRMBz.net
>>926
どこのレビュー?Amazon見る限りは良さそうだけど…

960:デフォルトの名無しさん
19/03/17 05:27:50.39 nAjwMdDd.net
>>924
ありがとう

961:デフォルトの名無しさん
19/03/17 07:33:20.83 nAjwMdDd.net
URLリンク(wa3.i-3-i.info)
こういう説明がわかりやすいのに、、、

962:デフォルトの名無しさん
19/03/17 07:39:55.25 nAjwMdDd.net
変数がメモリ上にあって、その変数の場所を渡すのが参照わたし=self
ということでいいんですか?

963:デフォルトの名無しさん
19/03/17 08:24:23.53 HhaziKqA.net
参照渡しがどうこうはとりあえず忘れろ
今までの流れには全く関係ないから

964:デフォルトの名無しさん
19/03/17 08:25:15.86 HhaziKqA.net
今までの流れってのはselfの話な

965:デフォルトの名無しさん
19/03/17 08:37:05.58 Udd8jK7+.net
>>935
書き方が悪かったわ
完全な初心者にとっては難しくてレビューが良くないね

966:デフォルトの名無しさん
19/03/17 08:41:05.15 nAjwMdDd.net
>>939
えっ?関係ないのですか、、、

967:デフォルトの名無しさん
19/03/17 11:18:35.50 oeP02mQD.net
Pythonではすべてが値渡しだ
そしてすべての値が所謂参照型だってだけ

968:デフォルトの名無しさん
19/03/17 11:41:11.52 R43k4iG5.net
内部的に参照渡しみたいなもんなんだからメモリの概念教えないと永久に理解できなく内科?

969:デフォルトの名無しさん
19/03/17 11:57:02.77 X1cUtWYO.net
参照渡しってどこが

970:デフォルトの名無しさん
19/03/17 12:00:59.08 X1cUtWYO.net
参照渡しについて
C#のrefみたいなのを参照渡しと呼ぶ勢と
C++のhoge&みたいなのを参照渡しと呼ぶ勢がいるので
ややこしい

971:デフォルトの名無しさん
19/03/17 12:08:17.15 iuUxAYpH.net
一子相伝究極奥義「参照渡し」

972:デフォルトの名無しさん
19/03/17 12:11:50.92 Udd8jK7+.net
値渡しと参照渡しと参照の値渡しがあるんだっけ

973:デフォルトの名無しさん
19/03/17 12:12:20.76 nAjwMdDd.net
>>943
値渡しということはコピーということですかね

974:デフォルトの名無しさん
19/03/17 12:14:55.90 7j/Zhhp5.net
大地参照も変換できない糞スマホの糞IME

975:デフォルトの名無しさん
19/03/17 12:15:53.60 vfP8HMqf.net
大地讃頌

976:デフォルトの名無しさん
19/03/17 12:21:40.62 XvGPMByn.net
>>946
C#のrefとC++のhoge&はどちらも変数のエイリアスを渡すから一緒
紛らわしいのは「参照の値渡し」

977:デフォルトの名無しさん
19/03/17 15:27:46.05 9wVKFPUf.net
>>937-938
いやさ、記憶領域の話をし出すから皆メモリの話をした訳だけど
ポインタとか言い出すと、Python上にはポインタは無いけど
CPython等の実装は変数が全てポインタで実体に対する参照なの
参照渡しというと普通は変数に対する参照を言うので関係ないし
変数が入れ物とはC言語などのスタック変数を前提としてしまってる
そもそも実装以前に、OOPどころか構造体的な概念も分かってないのでは?

978:デフォルトの名無しさん
19/03/17 18:00:19.80 oeP02mQD.net
>>938
こういう簡単なクラスで考えてみる
class MyClass:
  def __init__(self, name):
    self.name = name
  def getname(self):
    return self.name
コンストラクタで名前を受け取って、自身のnameプロパティにセットする
getnameメソッドでは自身の名前を返す簡単なクラス
このクラスの使い方は以下
a = MyClass("John")
a.getname() // 出力 'John'
ただしこういう風にも書ける
a = MyClass("John")
MyClass.getname(a) // 出力 'John'
Pythonのインスタンスメソッドは単なる関数もしくはスタティックメソッドみたいなものだということがわかる
a.getname() は暗黙的に MyClass.getname(a) に置き換えられてると考えてもいい

979:デフォルトの名無しさん
19/03/17 18:01:31.22 oeP02mQD.net
>>938
さらにselfというものがわかりやすいようにこのクラスを普通の関数と辞書型で再現してみる
def MyClass(name):
  self = {}
  __init__(self, name)
  return self
def __init__(self, name):
  self["name"] = name
def getname(self):
  return self["name"]

a = MyClass("John")
getname(a) // 出力 'John'
これでだいたい再現できる
何が言いたいかというとMyClass()という関数が空のインスタンス(ここでは辞書だが)を作成して__init__に引数として渡している
たぶんPythonのクラスでも暗黙的にMyClass()という関数が生成されて間接的に__init__を呼び出している
つまりself(=MyClassのインスタンス)というのは暗黙的に作られたMyClass()関数内で作られているオブジェクトだと考えればいい
Pythonほとんどやったことないから想像で適当に言ってるだけだけどな

980:デフォルトの名無しさん
19/03/17 19:53:26.49 UUXyH29G.net
>>954
self.name = name
部分はself変数にnameプロパティがついている状態なんですか?
nameのほうが変数名かとおもっていましたが
self.nameとすることでnameプロパティを定義している という感じですかね
なんのためにあるのかわからないですが

981:デフォルトの名無しさん
19/03/17 21:13:22.59 pWnkPEfA.net
>>955
デタラメな回答するの辞めーや

982:デフォルトの名無しさん
19/03/17 21:52:19.70 oeP02mQD.net
>>957
詳しいなら教えてくれ

983:847
19/03/17 22:22:14.14 QeX4wN+m.net
self.name = name
Ruby では、@ がインスタンス変数です。
@name = name
インスタンスや、インスタンス変数は、オブジェクト指向の基礎。
クラスはひな形で、実体化するには、個々のインスタンスを作らないといけない
これがわからないのなら、Rubyをみっちり勉強した方がよい。
Python から始めるのは無理
オブジェクト指向・関数型は、Rubyで学んだ方がよい。
Python, JavaScript, Kotlin にも応用できる

984:デフォルトの名無しさん
19/03/17 22:28:34.62 Ea7K77ki.net
Rubyは最も一般的な方法で定義した関数(関数じゃないw)が値として取り回せない(第一級関数でない)クソ言語wwwww
def add(a, b)
a + b
end
def opTwo(a, b, func)
func(a, b)
end
p opTwo(1, 2, add)
=> Line 9:in `add': wrong number of arguments (0 for 2) (ArgumentError)
from t.rb:9
プギャーm9(^Д^ )
ちなみにPython:
def add(a, b):
return a + b
def opTwo(a, b, func):
return func(a, b)
print(opTwo(1, 2, add))
=> 3
ちなみにJavascript:
function add(a, b) {
return a + b;
}
function opTwo(a, b, func) {
return func(a, b);
}
console.log(opTwo(1, 2, add))
=> 3

985:デフォルトの名無しさん
19/03/17 22:29:45.96 Ea7K77ki.net
def、proc、Proc.new、->、lambda、ブロック、・・挙動と使いどころの異なるこれら関数ライクを使いこなし、
==、===、eql?、equal?の違いと使いどころを完璧に把握しているRuby信者wwwww

986:デフォルトの名無しさん
19/03/17 22:31:54.89 Ea7K77ki.net
Ruby 初心者スレッド Part 64
スレリンク(tech板:658番)
658 デフォルトの名無しさん sage 2018/10/15(月) 10:09:06.69 ID:r7U1tD/N
擬似コードがそのまま動くのはPythonじゃね
関数型言語なら演算子がそのまま第一級関数であることとカリー化を使って data |> select ((>) 0) みたいに書けたりするね
ガチ関数型でなくてもまともなラムダがある言語なら select(x => x > 0) と遥かに見通し良く書ける
Rubyの &:: は極めて驚きが大きく醜悪な機能の一つだね

987:デフォルトの名無しさん
19/03/17 22:33:19.32 Ea7K77ki.net
クロージャって何がいいの? [転載禁止]©2ch.net
スレリンク(tech板:261番)
261 デフォルトの名無しさん sage 2014/12/15(月) 23:02:52.91 ID:BuhXHDiL
さらに言えば、Rubyのブロック変数のスコープの扱いが1.9で仕様変更されてるけど、
それについてmatz自身が
> それは、Rubyが最初から関数型言語としてスタートしてないからであって、言語が違うからですよね。
と語っているね

URLリンク(www.atmarkit.co.jp)

988:デフォルトの名無しさん
19/03/17 22:50:20.65 vwxCn2J+.net
必死すぎるw

989:デフォルトの名無しさん
19/03/17 22:58:46.72 Ea7K77ki.net
Rubyを長く使い続けることを僕がお薦めしない理由を説明します - YouTube
URLリンク(www.youtube.com)

990:デフォルトの名無しさん
19/03/17 22:59:12.36 Ea7K77ki.net
「Railsは終わった」と言われる理由
URLリンク(qiita.com)

991:デフォルトの名無しさん
19/03/17 23:07:59.19 Ea7K77ki.net
GitHub、2018年の人気プログラミング言語を概観できる「The State of the Octoverse」を発表
URLリンク(www.softantenna.com)
日本人が作ったプログラミング言語がランクイン!
誇らしい!!

992:デフォルトの名無しさん
19/03/17 23:13:16.15 Ea7K77ki.net
GitHubのRails離れと、迫りくるMicrosoft
URLリンク(yakst.com)

993:デフォルトの名無しさん
19/03/17 23:20:10.39 Ea7K77ki.net
世界最大のソフトウェア開発プラットフォームで最も人気なプログラミング言語は何なのか?
URLリンク(gigazine.net)
さあ何なのか!?日本の埃、Rubyかな?

994:デフォルトの名無しさん
19/03/17 23:23:45.80 Ea7K77ki.net
Pythonが2018年も人気ナンバーワン言語に - Rubyは13位へ
URLリンク(www.softantenna.com)
>日本生まれのプログラミング言語Rubyの順位は昨年の12位から13位へと一つ順位を落としています。

URLリンク(findy-code.io)
↑「衰退するかもしれない言語」のRubyのグラフ凄すぎwww

995:デフォルトの名無しさん
19/03/17 23:24:59.24 Ea7K77ki.net
URLリンク(i.imgur.com)

996:デフォルトの名無しさん
19/03/17 23:39:56.92 vwxCn2J+.net
この調子で1000まで埋めてくれwww

997:956
19/03/18 00:32:48.76 QSJWNz5N.net
なんとなくわかったわ
__new__でインスタンス生成して__init__で初期化されてるのはいいとして
それらの関数がどこから呼ばれるかが分からなかったけど
type.__call__(cls, *args, **kwarg)から呼ばれてるんだな
class MyClass:
  def __new__(cls, name):
    return object.__new__(cls)
  def __init__(self, name):
    self.name = name
  def getname(self):
    return self.name
a = MyClass("Mike") # これは
a = type.__call__(MyClass, "Mike") # これの糖衣構文と
type.__call__はざっくり以下のような実装らしい
class type:
def __call__(cls, *args, **kwarg):
obj = cls.__new__(cls, *args, **kwargs)
obj.__init__(*args, **kwargs)
return obj
一番元になるオブジェクトを生成するであろうobject.__new__()がどういう風に実装されてるのかは分からなかった
Cで実装されてるらしい

998:デフォルトの名無しさん
19/03/18 00:34:09.24 GvvOJgHh.net
破産者マップに出てるぞお前さん

999:デフォルトの名無しさん
19/03/18 01:21:38.93 HYm9qYKJ.net
Rubyに興味も失ってたが、調べたらRuby3から頑張るっぽいね。
JITは今現在はオンにしてもRails遅くなるっぽい。
型検査はツールの提供と精度向上の方針。
“Rubyは死んだ”のか?
まつもとゆきひろ氏が語る「プログラミング言語サバイバル」とRubyの未来 - Part1
URLリンク(logmi.jp)
かと思えば、こんな深刻な記事も。
想定してなかったくらい大規模な開発に使われて、つぎはぎ継ぎ接ぎで開発して行ったら行き詰まったって話になるのかな?
Pythonも、同類になる可能性はあるが時期が早く来たのはRubyだったと。
Rubyは滅びゆく言語なのか?
URLリンク(qiita.com)

1000:デフォルトの名無しさん
19/03/18 01:32:41.95 TDQy6vox.net
Redmonk言語ランキングがKotlinとSwiftの急上昇を明らかにした
URLリンク(www.infoq.com)
> Rubyは5位から8位に下がりはしたが、他のトップ10言語はほとんど同じ順位にとどまっている。
独り負けwwww

1001:デフォルトの名無しさん
19/03/18 01:33:16.80 TDQy6vox.net
日本生まれのクソ言語Ruby『最も嫌われているプログラミング言語』堂々ランクイン!!
URLリンク(japan.zdnet.com)
おめでとうクソ言語!🎊
おめでとう日本の恥!!www
URLリンク(japan.zdnet.com)

1002:デフォルトの名無しさん
19/03/18 01:56:22.04 TDQy6vox.net
Ruby is dead.
URLリンク(rubyisdead.science)

1003:デフォルトの名無しさん
19/03/18 02:01:08.34 TDQy6vox.net
Rubyにはウンザリ!動的型付け、副作用、およびオブジェクト指向プログラミング全般からの考察
URLリンク(postd.cc)

1004:デフォルトの名無しさん
19/03/18 07:48:49.96 C9BGuQ42.net
self.name = name
みたいな変数は
self変数にnameプロパティを定義しているということなんですか?
init内に書かれる事が多いですが、プロパティはどのような使われ方をするのでしょうか

1005:デフォルトの名無しさん
19/03/18 11:21:28.47 vyVf53oQ.net
Pythonでアニメーションムビーって作れますか?
教えてエロい人

1006:デフォルトの名無しさん
19/03/18 11:42:29.94 GvvOJgHh.net
出来るよ
このポリゴンアニメもPython で組まれている
URLリンク(youtu.be)

1007:デフォルトの名無しさん
19/03/18 13:43:14.45 +MPRGO7m.net
くだすれPython(超初心者用) その42【Ruby禁止】
スレリンク(tech板)

1008:デフォルトの名無しさん
19/03/18 13:50:09.52 HYm9qYKJ.net


1009:デフォルトの名無しさん
19/03/18 14:39:32.03 3zrU7iIi.net
Pythonなら音声合成も機械学習でできるよ!

1010:デフォルトの名無しさん
19/03/18 14:59:40.24 vyVf53oQ.net
>>982
ありがとうエロい人
よろしければおすすめのライブラリ教えてください

1011:デフォルトの名無しさん
19/03/18 16:32:01.12 8JXxWTh8.net
Pythonなら毛糸洗いに自信が持てるよ!

1012:デフォルトの名無しさん
19/03/18 17:23:25.93 LuaAQ2Ag.net
>>987
それはボールドだろ

1013:デフォルトの名無しさん
19/03/18 17:23:44.99 LuaAQ2Ag.net
お、IDがlua永久にアゲだ

1014:デフォルトの名無しさん
19/03/18 17:33:08.14 1Gq1ACAN.net
Python(Jupyter)で、複数の行をループさせることって出来ますか?
やりたいことはIn[5]~In[8]を10回繰り返す、みたいな感じです

1015:デフォルトの名無しさん
19/03/18 20:07:37.57 C9BGuQ42.net
selfわかんないよぉ(´;ω;`)

1016:デフォルトの名無しさん
19/03/18 20:25:52.07 3zrU7iIi.net
>>991
class className():
def methodName(self):
print("Hello World!")
instance = className()
instance.methodName()

1017:デフォルトの名無しさん
19/03/18 20:30:41.38 jiPExRTx.net
>>990
forループとかwhileループをさがしてるのか?

1018:デフォルトの名無しさん
19/03/18 20:34:08.67 C9BGuQ42.net
self.name=nameみたいなやつは、変数名はnameなのですが、selfなのですか?

1019:デフォルトの名無しさん
19/03/18 20:36:17.92 C9BGuQ42.net
>>992
ですからこれ、selfはなんの役割をしているのですか?

1020:デフォルトの名無しさん
19/03/18 20:41:13.50 jiPExRTx.net
>>994
そうだな
>>995
この()の中のselfについては深く考えたことないなー
クラス化した場合は 必ず1ツ目の引数self ってのは なんかもう
条件の後とかに「:」つけるのと一緒な感覚だなー

1021:デフォルトの名無しさん
19/03/18 21:09:20.45 GvvOJgHh.net
>>99


1022:5 class className(): def methodName(zelf): print("Hello World!") instance = className() instance.methodName() でも動くぞ



1023:デフォルトの名無しさん
19/03/18 21:17:48.43 GvvOJgHh.net
よって、
self =zelf

(証明おわり)

1024:デフォルトの名無しさん
19/03/18 21:36:51.06 C9BGuQ42.net
↑ありがつ

1025:デフォルトの名無しさん
19/03/18 23:31:38.66 +MPRGO7m.net
>>991
考えるな感じるんだ

1026:847
19/03/18 23:42:48.23 e1XJ4IHa.net
self, this は、そのインスタンスを指す。
オブジェクト指向の基本だろ
それもわからない人には、Python は無理!
勉強の順番を変えてください!
Ruby でみっちり、オブジェクト指向・関数型を学んでください!
その後に、Python, JavaScript, Kotlin に応用してください!

1027:デフォルトの名無しさん
19/03/18 23:44:39.51 +omKGkAV.net
これ、スコープとかnamespaceをわかっとらん

1028:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 42日 2時間 22分 29秒

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


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch