In [5]:
class Car():
def exclaim(self):
print("I'm a Car!")
class Yugo(Car):
def exclaim(self):
print("I'm a Yugo!")
car = Car()
yugo = Yugo()
car.exclaim()
# 第一引数のselfはこういう使い方を省略するために存在する。
Car.exclaim(car)
yugo.exclaim()
In [4]:
# getter, setter
class Duck():
def __init__(self, input_name):
self.hidden_name = input_name
def get_name(self):
print('getterが呼ばれました')
return self.hidden_name
def set_name(self, input_name):
print('setterが呼ばれました')
self.hidden_name = input_name
name = property(get_name, set_name)
duck = Duck('あひる')
print(duck.name)
duck.name = 'ahiru'
print(duck.name)
In [3]:
# getter setterをデコレータで+マングリング
class Duck():
def __init__(self, input_name):
self.__name = input_name
@property
def name(self):
print('getterが呼ばれました')
return self.__name
@name.setter
def name(self, input_name):
print('setterが呼ばれました')
self.__name = input_name
duck = Duck('あひる')
print(duck.name)
duck.name = 'ahiru'
print(duck.name)
print(duck.__name)
In [9]:
#クラスメソッド
class A():
count = 0
def __init__(self):
A.count += 1
def exclaim(self):
print("私はAです")
@classmethod
def kids(cls):
print("Aは", cls.count, "個のインスタンスを持っています。")
a1 = A()
a2 = A()
a3 = A()
A.kids()
In [5]:
class Word():
def __init__(self, text):
self.text = text
def __eq__(self, word2):
return self.text.lower() == word2.text.lower()
def __str__(self):
return self.text
def __repr__(self):
return 'Word("' + self.text + '")'
first = Word('ha')
print(first) # strを使う
second = Word('HA')
print(first == second)
first # reprを使う
Out[5]:
In [ ]: