Python

python:函式內的self.variable

  • May 5, 2022

我正在處理側重於類及其功能的教程 Python 程式碼。我想知道self.類中定義的變數的方法。

我是否應該self.僅用於__init__函式變數(在我的範例中為 0 函式)以及使用之前定義的變數的其他函式(作為同一類中另一個函式的結果)?在我的範例中,第二個函式引入kyzvariables 來計算新的全域變數 ( c),下一個函式將使用該變數。應將那些kyz定義為__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()

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 的一部分,僅用於執行函式指令。

引用自:https://unix.stackexchange.com/questions/619148