お世話になります。
初心者で構文について調べたのですが意外と回答がなく質問させて頂きました。
#質問#1 is演算子は同じ参照を指しているときにTrueを返す為同じfooを入れてもFalseになるのでしょうか?
下のxとyの中身を比較してtrueとする式はどのように書くべきでしょうか?
x = ['foo'] y = x print x is y #=> True x = ['foo'] y = ['foo'] x is y #=> Falseになる
というのも短い文字列のときは高速化のためにオブジェクトをキャッシュすることがあるらしく、キャッシュしたオブジェクトを参照するとis演算子でTrueになるということです。いつもではないらしいのですが、稀にTrueになるらしいのでどの構文で比較すればいいか困っています。
x = 'foo' y = 'foo' print x is y #=> True !?
#質問#2コンストラクタの意味と用語の意味が以下であっているか教えてください。
例題を以下示しましたがコンストラクタをかませる意味あいがわかりません。
具体的にはなぜself.nameを一度defで定義しないといけないのでしょうか?
def init(self, name):
self.name = name
がなくいきなりdef say ではいけないのでしょうか?
用語 この構文の場合どれをさしているのでしょうか。
コンストラクタ:この場合__init__(self, name):をコンストラクタという
オブジェクトのメソッド:def say(self): sayメソッドとかいう
オブジェクト:dog?Animal("いぬ")?
# クラスの定義 class Animal: # コンストラクタの定義 def __init__(self, name): self.name = name # オブジェクトのメソッドを定義 def say(self): print("こんにちは! 私は" + self.name + "です。") # 2つのオブジェクトを作成する。selfは指定しない。nameに該当する値を指定する dog = Animal("いぬ") cat = Animal("ねこ") # それぞれのオブジェクトのsayメソッドを実行 # 別々の結果が出力される dog.say() cat.say()
宜しくお願いいたします。
回答4件
あなたの回答
tips
プレビュー