pythonベースインスタンスメソッド、クラスメソッド、静的メソッド
2789 ワード
1インスタンスメソッド/オブジェクトメソッド
インスタンスメソッドまたはオブジェクトメソッドとは、クラスで定義された一般的なメソッドを指します.
オブジェクトをインスタンス化してからしか使用できない方法で、この方法の最初のパラメータはオブジェクト自体に違いありません.
2静的アプローチ
(1)形式:メソッドに@staticmethodを追加
(2)パラメータ:静的メソッドにはパラメータがあってもなくてもよい
(3)シーンの適用:クラスオブジェクトおよびインスタンスオブジェクトに関係なく一般的に使用されるコード
(4)使用方法:クラス名.クラスメソッド名(またはオブジェクト名.クラスメソッド名)
3種類の方法
インスタンス化する必要はなく,直接呼び出す方法でよいが,方法の最初のパラメータはクラス自体を受け入れるに違いない.
(1)メソッドに@classmethodを追加
(2)メソッドのパラメータはclsであっても他の名前であってもよいが,一般的にはclsがデフォルトである.
(3)cls指向クラスオブジェクト(つまりGoods)
(4)シーンの適用:1つのメソッドで静的属性のみが適用される場合、クラスメソッド(クラスメソッドで属性を変更)を使用できます.
(5)オブジェクト名であるもよい.類方法名.あるいはクラス名です.類方法名
どの商品でも割引できます
インスタンスメソッドまたはオブジェクトメソッドとは、クラスで定義された一般的なメソッドを指します.
オブジェクトをインスタンス化してからしか使用できない方法で、この方法の最初のパラメータはオブジェクト自体に違いありません.
class Person():
def hello(self): #self
print('hello world')
2静的アプローチ
(1)形式:メソッドに@staticmethodを追加
(2)パラメータ:静的メソッドにはパラメータがあってもなくてもよい
(3)シーンの適用:クラスオブジェクトおよびインスタンスオブジェクトに関係なく一般的に使用されるコード
(4)使用方法:クラス名.クラスメソッド名(またはオブジェクト名.クラスメソッド名)
class Game():
def __init__(self,name,age):
self.name = name
self.age = age
#
#def test1(self):
# self.name
# self.age
@staticmethod
def mune():
print(' 【1】')
print(' 【2】')
print(' 【3】')
Game.mune() #
#
game = Game(' ',10)
game.mune()
"""
[1]
[2]
[3]
[1]
[2]
[3]
"""
3種類の方法
インスタンス化する必要はなく,直接呼び出す方法でよいが,方法の最初のパラメータはクラス自体を受け入れるに違いない.
(1)メソッドに@classmethodを追加
(2)メソッドのパラメータはclsであっても他の名前であってもよいが,一般的にはclsがデフォルトである.
(3)cls指向クラスオブジェクト(つまりGoods)
(4)シーンの適用:1つのメソッドで静的属性のみが適用される場合、クラスメソッド(クラスメソッドで属性を変更)を使用できます.
(5)オブジェクト名であるもよい.類方法名.あるいはクラス名です.類方法名
class Dog:
role = ' '
def test(self):
#
pass
@classmethod
def test2(cls):
"""cls """
print(cls.role)
print(Dog.role) #
#Dog
print(Dog.role)
#
Dog.test2()
#
dog = Dog()
dog.test2()
どの商品でも割引できます
""" """
class Goods:
def __init__(self,name,price):
self.name = name
self.__price = price
self.__discount = discount #
@property
def price(self):
return self.__price * __discount = self.__price
def change_discount(self,new_discount) #
__discount = new_discount
apple = Goods(' ',10) # 10
apple.change_discount(0.8) #
print(apple,price)
banana = Goods(' ',20)
banana.change_discount(0.7)
print(banana,price)
""" classmetho """
class Goods:
__discount = discount #
def __init__(self,name,price):
self.name = name
self.__price = price
@property
def price(self):
return self.__price * __discount = self.__price
@classmethod
def change_discount(self,new_discount) #
__discount = new_discount
Good.change__discount(0.8)
apple = Goods(' ',10) # 10
print(apple,price)
banana = Goods(' ',20)
print(banana,20)