这里有两段代码执行完全相同的任务。 这个:
class employees:
raise_amount=1.04
def __init__(self, first, last, pay):
self.first=first
self.last=last
self.pay=pay
self.email=first + '.' +last+ '@abc.com'
self.fullname=first+' '+last
def raised(self):
self.raised=self.pay*self.raise_amount
em1=employees('Carey', 'Barlog', 6000)
em2=employees('Test', 'User', 3000)
em2.raised()
print(em2.raised)
还有:
class employees:
raise_amount=1.04
def __init__(self, first, last, pay):
self.first=first
self.last=last
self.pay=pay
self.email=first + '.' +last+ '@abc.com'
self.fullname=first+' '+last
self.raised=self.pay*self.raise_amount
em1=employees('Carey', 'Barlog', 6000)
em2=employees('Test', 'User', 3000)
print(em2.raised)
有人可以向我解释一下两者之间的区别吗?如果我使用一种方法来替代另一种方法?
答案 0 :(得分:0)
第一个代码段是有问题的,因为您为方法和实例属性使用了相同的名称raised
,所以您将销毁raised
方法并将其替换为首次调用后的raised
属性。
撇开这个问题,仅当调用raised
时,第一个代码段设置employees.raised()
属性,而实例初始化时,第二个代码段设置raised
属性。前者允许更多地控制何时计算raised
(可能在pay
和raise_amount
得到更新之后),而后者则允许始终为每个实例初始化raised
属性
答案 1 :(得分:0)
在第一个示例中,您所要做的就是调用类,并且由于创建类employee的实例时python运行__init__
,因此self.raised将会增加。
但是,如果您想创建一个实例并然后提高工资,让我们稍后再说,您将使用第二个实例,因为它定义了工资提高功能。