タグ

2020年3月28日のブックマーク (3件)

  • PythonでC#やJavaのinterfaceみたいなものを実現する - Qiita

    はじめに 僕はC#やJavaのような静的型付けのオブジェクト指向言語に慣れており、pythonを勉強中です。 C#やJavaにはinterfaceというのがあり、そのinterfaceを実装したさまざまなクラスのインスタンスを、すべて同じ型のオブジェクトのように取り扱うことができます。 同じようなことをpythonでもできないのかな、と思って調べてみました。 抽象基底クラス(ABC: Abstract Base Class)の定義 pythonはバージョン3で抽象基底クラス(ABC: Abstract Base Class)というものをサポートするようになったそうです。 これを利用することで、C#やJavaのインタフェースみたいなものを実現できるようです。 試してみましょう。 class AbstractHello(metaclass=ABCMeta): @abstractmethod d

    PythonでC#やJavaのinterfaceみたいなものを実現する - Qiita
  • スタティックメソッドは要らない子? - atsuoishimoto's diary

    Pythonでは、クラス内で定義することの出来るメソッドが三種類用意されている。メソッド・クラスメソッド・スタティックメソッドの3種類だ。それぞれどんな特徴を持っているのだろうか? メソッド まず、メソッドはおなじみのインスタンスメソッドで、第一引数としてインスタンスを受け取り、呼び出す時には必ずインスタンスが必要となる。 class Foo(object): # メソッド def method(self, arg): pass Foo().method("arg") #OK Foo.method("arg") #これはエラー クラスメソッド クラスメソッドは第一引数としてクラスオブジェクトを受け取り、インスタンスが無くとも呼び出すことが出来る。 class Foo(object): # クラスメソッド @classmethod def clsmethod(cls, arg): pass

    スタティックメソッドは要らない子? - atsuoishimoto's diary
  • Pythonで classmethod、staticmethod を使う - Qiita

    いつ使うと良いか インスタンス変数やインスタンスメソッドにアクセスしないとき(メソッド内でselfを使わないとき)は classmethod、staticmethodを使おう。 classmethod: クラス変数にアクセスすべきときや、継承クラスで動作が変わるべきときは classmethodを使おう。 staticmethod: 継承クラスでも動作が変わらないときはstaticmethodを使おう どちらもデコレーターで定義できる。classmethodでは第一引数にclsを与えて定義する。 例 class Student: def __init__(self, name, school): self.name = name self.school = school self.marks = [] def average(self): """平均成績を返す インスタンス変数にアクセスし

    Pythonで classmethod、staticmethod を使う - Qiita
    craftsman055
    craftsman055 2020/03/28
    staticmethodについて