class Yamanote: pass shinagawa = Yamanote() shinagawa.city = "Minato-ku" shinagawa.user = 370000 shinagawa.line = 24 shibuya = Yamanote() shibuya.city = "Shibuya-ku" shibuya.user = 3310000 shibuya.spot = "hachiko" print(shinagawa.city) print(shibuya.spot)
[vagrant@localhost python]$ python app.py
Minato-ku
hachiko
コンストラクタを使う。
class Yamanote: def __init__(self, city): self.city = city shinagawa = Yamanote("Shinagawa-ku") shibuya = Yamanote("Shibuya-ku") print(shinagawa.city) print(shibuya.city)
[vagrant@localhost python]$ python app.py
Shinagawa-ku
Shibuya-ku
クラス変数を呼び出す。
class Yamanote: count = 0 def __init__(self, city): Yamanote.count += 1 self.city = city shinagawa = Yamanote("Shinagawa-ku") shibuya = Yamanote("Shibuya-ku") print(Yamanote.count)
ふむ。
[vagrant@localhost python]$ python app.py
2
メソッド
class Yamanote: count = 0 def __init__(self, city): Yamanote.count += 1 self.city = city def announce(self): print("This is " + self.city) shinagawa = Yamanote("Shinagawa-ku") shibuya = Yamanote("Shibuya-ku") shinagawa.announce() shibuya.announce()
わかるんだが、使っていかないと、慣れないね。
[vagrant@localhost python]$ python app.py
This is Shinagawa-ku
This is Shibuya-ku
@classmethod
class Yamanote: count = 0 def __init__(self, city): Yamanote.count += 1 self.city = city def announce(self): print("This is " + self.city) @classmethod def show_info(cls): print(str(cls.count) + "instances") shinagawa = Yamanote("Shinagawa-ku") shibuya = Yamanote("Shibuya-ku") Yamanote.show_info()
あああああ
[vagrant@localhost python]$ python app.py
2instances
class のprivate, public
class Yamanote: def __init__(self, city): self.__city = city def announce(self): print("This is " + self.__city) shinagawa = Yamanote("Shinagawa-ku") shibuya = Yamanote("Shibuya-ku") print(shinagawa.__city)
[vagrant@localhost python]$ python app.py
Traceback (most recent call last):
File “app.py”, line 12, in
print(shinagawa.__city)
AttributeError: Yamanote instance has no attribute ‘__city’
ほえ~
継承のsuperがうまくいかない。
class Yamanote: def __init__(self, spot): self.spot = spot def announce(self): print("Enjoy " + self.spot) class Startup(Yamanote): def __init__(self, spot, company): super().__init__(spot) self.company = company def hello(self): print("What's up " + self.company) harajyuku = Startup("takeshita","sm") print(Harajyuku.spot) Harajyuku.hello()
[vagrant@localhost python]$ python app.py
Traceback (most recent call last):
File “app.py”, line 16, in
harajyuku = Startup(“takeshita”,”sm”)
File “app.py”, line 11, in __init__
super().__init__(spot)
TypeError: super() takes at least 1 argument (0 given)
あ、python2系はエラーになるのね。。早くいってよ、もー
import math, random print(math.pi)