私はクラスとその機能に焦点を当てたチュートリアルPythonコードを書いています。self.
クラス内で定義された変数のメソッドを知りたいです。
self.
関数の変数__init__
(例関数では0)と以前に定義された変数(同じクラスの他の関数の結果)を使用する他の関数のみを使用する必要がありますか?私の例では、2番目の関数は、次の関数で使用する新しいグローバル変数()を計算するために、および変数をk
導入y
します。 、 、 、 で定義する必要があります。可変ですか? 2つの違いは何ですか?z
c
k
y
z
__init__
# define the class
class Garage:
# 0 - define the properties of the object
# all variables are .self since they are called first time
def __init__(self, name, value=0, kind='car', color=''):
self.name = name
self.kind = kind
self.color = color
self.value = value
# 1- print the properties of the object
# we are calling the variables defined in the previous function
# so all variables are self.
def assembly(self):
desc_str = "%s is a %s %s worth $%.2f." % (self.name, self.color, self.kind, self.value)
return desc_str
# 2 - calculate coeff of its cost
# ????
def get_coeff(self,k=1,y=1,z=1):
#self.k =k
#self.y =y
#self.z =z
global c
c=k+y+z
return c
# 3 use the coeff to calculate the final cost
# self.value since it was defined in __init__
# c - since it is global value seen in the module
def get_cost(self):
return [self.value * c, self.value * c, self.value * c]
car1= Garage('fiat',100)
car1.assembly()
答え1
Self はクラスインスタンスの表現なので、オブジェクトプロパティにアクセスしようとすると、コンストラクタは self を使用してインスタンスパラメータにアクセスします。
car1= Garage('fiat',100)
## car1.name = self.name == fiat
## car1.value= self.value == 100
一方、def get_coeff(self,k=1,y=1,z=1)
k、y、zがパラメータ(デフォルトは1)である関数があります。これはローカルでのみ使用でき、関数内で変数として操作/オーバーライドでき、コンストラクタに入れることができます。 CLASS の一部であり、機能命令の実行にのみ使用されます。