2015/11/12

[勉][py]やむを得ず覚えるpython (2)

昨日から始まった、緊急企画。
「やむを得ず覚えるpython」、略してやむpyです。

『どいつもこいつもpython, python』とうなっていたのだが、うなっていてもpythonがなくなるわけでもなし。
少しpythonを入れておくと、体内で増殖して免疫ができるかもしれない。

hiro99ma blog: [勉][py]やむを得ず覚えるpython (1)


変数

変数の宣言は特になく、そのまま代入すればよいようだ。

02.py

#!/usr/bin/python
nihon = """\
Hello, World!
And Good Night!\
"""
print(nihon)

$ ./02.py
Hello, World!
And Good Night!

「"""」で囲むと、改行付きの文字列を代入できるらしい。
ただ、"""前後の改行も入ってしまうので、ここでは\でエスケープしている。
これでもよい。

#!/usr/bin/python
nihon = "Hello, World!\nAnd Good Night!"
print(nihon)

print()は改行付き出力なので、ここまでやるとprintf()っぽくなる。
まあ、そこまでするかって話だが。

#!/usr/bin/python
import sys
nihon = "Hello, World!\nAnd Good Night!\n"
sys.stdout.write(nihon)

 

足し算

#!/usr/bin/python
nihon = "Hello, World!"
nihon += " and Good Night!"
print(nihon)

$ ./02.py
Hello, World! and Good Night!

#!/usr/bin/python
nihon = "Hello, World!"
nihon += 2
print(nihon)

$ ./02.py
Traceback (most recent call last):
  File "./02.py", line 3, in <module>
    nihon += 2
TypeError: cannot concatenate 'str' and 'int' objects

#!/usr/bin/python
nihon = "5"
nihon += 2
print(nihon)

$ ./02.py
Traceback (most recent call last):
  File "./02.py", line 3, in <module>
    nihon += 2
TypeError: cannot concatenate 'str' and 'int' objects

 

文字列は文字列、数字は数字で区別されている。


クラス

構造体を調べようとすると、タプルとかいろいろ説明が出てきたけど、まずはクラスでいこう。

#!/usr/bin/python
class Yebisu:
        def __init__(self, x, y):
                self.x = x
                self.y = y
nihon = Yebisu(1, 2)
print(nihon.x)
print(nihon.y)

$ ./02.py
1
2

なんだよselfって!!
他のじゃダメなの?

#!/usr/bin/python
class Yebisu:
        def __init__(yoshio, x, y):
                yoshio.x = x
                yoshio.y = y
nihon = Yebisu(1, 2)
print(nihon.x)
print(nihon.y)

$ ./02.py
1
2

やるじゃないか、よしお。

 

メンバ変数がどれなのかがわからないのが嫌だな。

#!/usr/bin/python
class Yebisu:
        y = 2
        def __init__(yoshio, x):
                yoshio.x = x
nihon = Yebisu(1)
print(nihon.x)
print(nihon.y)

$ ./02.py
1
2

これはこれでよいようだが、もしかするとyはclass変数なのか?

#!/usr/bin/python
class Yebisu:
        y = 2
        def __init__(yoshio, x):
                yoshio.x = x
nihon = Yebisu(1)
print(nihon.x)
Yebisu.y = 3
print(nihon.y)

$ ./02.py
1
3

class変数なんだ。

 

明日はもうちょっと深入りしましょうかね。
Python入門 - クラス

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。