我正在处理侧重于类及其函数的教程 Python 代码。我想知道self.
类内定义的变量的方法。
我是否应该self.
仅使用函数的变量__init__
(在我的示例中为 0 函数)以及使用之前定义的变量的其他函数(作为同一类中另一个函数的结果)?在我的示例中,第二个函数引入k
、y
和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 的一部分,仅用于执行函数指令。