Open yuyuyuriko78 opened 4 years ago
import
につづくものがモジュールとして読み込まれる。
例:srcディレクトリ内の「user.py」ファイルをインポートする
import src.user
src.user.User
のように、ファイル名とその階層から記述する必要があるので、長い。。例:srcディレクトリ内の「user.py」ファイル内の「User」クラスをインポートする
from src.user import User
from ファイル名 import クラス名
User
だけでOK!短い例:srcディレクトリ内の「user.py」ファイルをモジュールとしてインポートし、その中のUserクラスを使いたいとき
import src.user as my_user
as
の後で、簡単な別名を指定することができる。""
は不要。my_user.User(~~~)
まだまし!柿埜さん、ありがとうございます。 わたしも何となくこの辺りは知っていましたが、頭が整理されました!
@staticmethod
デコレータを使用する
@デコレータ名
を、関数定義(def)の上の行につけるだけ。AttributeError
となるそうだったんですか。プライベートメソッドは使ったことがなかったです。 でもインスタンスで使えないメソッドって、どういう状況で使ったらよいのでしょうか?事例があったら教えてください。
そうだったんですか。プライベートメソッドは使ったことがなかったです。
pythonでは中身をオープンにすることにより価値を置くとのことで、あまり使われないようです!
インスタンスで使えないメソッドって、どういう状況で使ったらよいのでしょうか?事例があったら教えてください。
そういわれてみるとそうですね・・・さがしてみます!
from 親クラスを含むファイル名 import 親クラス名
class 子クラス( 親クラス ):
処理
class クラス名: 処理
だった。クラス名の後の()が不要であった。継承はクラスに対するもの。オーバーライドはメソッドに対するもの。
親クラスを継承したはいいものの、親クラスのメソッドを子クラス向けにカスタムしたい!というときにメソッドをオーバーライドする
子クラスで、親クラスのメソッドと同名のメソッドを定義するだけで、オーバーライドとなる。
親クラスのまんまでいい部分は、super().メソッド名
とし、その下にカスタム部を書く
クラスの継承は会社の勉強会で今しているところです。コードの共有は出来ませんが、また事例の紹介はしますね。
演習問題4 クラスの継承を用いたコードを作成してください。 参考:https://blog.codecamp.jp/python-class-2
そうだったんですか。プライベートメソッドは使ったことがなかったです。
pythonでは中身をオープンにすることにより価値を置くとのことで、あまり使われないようです!
インスタンスで使えないメソッドって、どういう状況で使ったらよいのでしょうか?事例があったら教えてください。
そういわれてみるとそうですね・・・さがしてみます!
Python ではあまり使われないのであれば、事例は探さなくてもよいですよ。それよりWebアプリの作成に注力しましょう。
@デコレータ名
を付けるだけ。@classmethod
@staticmethod
@property
@property
def name(self):
return str("Player:"+ self._name)
デコレーター自体は、他人のコードを読み解くと為に知識としては知っていましたgあ、まだ自分でつあったことはありません。こうして整理していただくと、非常に参考になります。
from enum import Enum
で、enumライブラリからEnumクラスをインポートすると使えるclass クラス名(Enum)
class クラス名(継承元)
で継承ができるfrom enum import Enum
class Grade(Enum):
HANAKO = 1
TARO = 2
SABURO = 3
def __str__(self):
if self == Grade.HANAKO:
return "花子です"
if self == Grade.TARO:
return "太郎です"
if self == Grade.SABURO:
return "三郎です"
if __name__ == '__main__':
# 添え字でアクセスできる
print(Grade.TARO)
# インデックスでもアクセスできる
print(Color(1))
class Car(Enum):
AUDI = 0
BMW = 1
BENZ = 2
tt = Car.AUDI
print(tt.name) # => 'AUDI'
print(value) # => 0
ライブラリの中のクラスを呼び出すのがまさにこの構文ですね。 import pandas as pd import numpy as np のようにライブラリを省略して引用するのは、自分で作ったクラスでもできるのしょうか?
@Atsuhiko https://uxmilk.jp/23001 このサイトでは「test_module」を「test」として読み込んでるので、大丈夫そうです!
n = random.randint(a, b)
aからb(bを含む)の範囲の中から、ランダムな整数を得るclass Person:
def __init__(self, name, age):
self._name = name
self._age = age
def __str__(self):
return '{0}さんは{1}歳です'.format(self.name, self.age)
hanako = Person("Hanako", 21)
print(hanako)
# 結果は「Hanakoさんは21歳です」
自作モジュール作成
モジュールとは
src/user.py
main.py