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()


I'm a Car!
I'm a Car!
I'm a Yugo!

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)


getterが呼ばれました
あひる
setterが呼ばれました
getterが呼ばれました
ahiru

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)


getterが呼ばれました
あひる
setterが呼ばれました
getterが呼ばれました
ahiru
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-3-b9829fe67bfa> in <module>()
     17 duck.name = 'ahiru'
     18 print(duck.name)
---> 19 print(duck.__name)

AttributeError: 'Duck' object has no attribute '__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()


Aは 3 個のインスタンスを持っています。

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を使う


ha
True
Out[5]:
Word("ha")

In [ ]: