OOP: Class and Instances
Types of Programming Language
- Object Oriented Programming
- Functional Programming
Structures of Python
- Class
- Attribute
- Method
- Variable
- Module / File compiled in Python code
- Object / number, string, function etc. all points
- Function used in method / class function,
__init __()
is also one of the methods - Objects (processing functions etc.) created in instance / class
クラス インスタンス 属性: アトリビュート 引数: アーギュメント コンストラクタ スタティックメソッド
Code for OOP
# クラス
class Human(object):
# クラス変数
language = "English"
num_of_humans = 0
# コンストラクタ
def __init__(self, sex, age, nationality):
# インスタンス変数、属性: アトリビュート
self.sex = sex
self.age = age
self.nationality = nationality
Human.num_of_humans += 1
# インスタンスメソッド1:インスタンス変数の出力
def sex_identifier(self):
return "I am {}.".format(self.sex)
# インスタンスメソッド2:インスタンス変数の更新
def generation_converter(self):
self.age = round(int(self.age) * 0.1) * 10
# クラスメソッド:クラスがインスタンス化されるたびに呼び出される関数
@classmethod
def language_learner(cls, lang):
return cls.language = lang
# クラスメソッドによる新たなインスタンスの生成
@classmethod
def from_string(cls, human_str):
sex, age, nationality = human_str.split("-")
cls(sex, age, nationality)
# 静的メソッドは毎回同じ結果を出力したいときに使う
@staticmethod
def hello():
print ("Hello")
# インスタンス化
Akira = Human("male", 25, "Japan")
Vivec = Human("male", 22, "India")
Selvina = Human("female", 25, "France")
print(Akira.age) # 25
print(Akira.language) # "English"
print(Akira.sex_identifier()) # "male"
print(Akira.__dict__) # {インスタンス属性}
print(Human.__dict__) # {インスタンス属性+クラス属性}
# クラス変数のインスタンス化
Akira.language = "French"
# クラス変数も呼び出せるようになる
print(Akira.__dict__) # {インスタンス属性+クラス属性}
# クラスメソッド
Human.language_learner(lang="Japanese")
print(Akira.language) # "Japanese"
# 新しいインスタンスの生成
human_str1 = "female-40-Brazil"
Maria = Human.from_string(human_str1)
print(Maria.nationality) # "Brazil"
# staticmethod
print(Akira.hello()) # "Hello"
Leave a Comment