我对OOP中对象的行为有点困惑

2024-04-25 01:29:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我读到过,对象的行为是对象执行的动作(在现实生活中),但在编程中,上下文不是方法描述的对对象执行的操作/动作。你知道吗

例如,在下面的代码中,我们有一个显示员工全名的方法。在这种情况下,动作是由对象执行的还是对对象执行的?。当我们将显示全名与狗对象的行为(如吠叫、睡觉等)进行比较时,它怎么可能是一个对象的行为呢。谢谢你的帮助

class employee:

    raise_value=1.05
    def __init__(self,first,last,pay):

        self.first=first
        self.last=last
        self.pay=pay

    def emp_fullname(self):
        return "Full name is {} {}".format(self.first,self.last)

    def set_raise(self):
        self.new_sal=float(self.pay)*employee.raise_value
        return 'My new salary is {}'.format(self.new_sal)

e1=employee("Chyanit","Singh","60000")
e2=employee("Parag","Singh","40000")

e1.emp_fullname()

Tags: 对象方法selfnewreturnvaluedefemployee
2条回答

方法由对象执行或在对象上执行。不一定非得是这样或那样。GetFullName()SetFullName(first,last)都是方法。前者是由物体来完成的,就像狗吠一样,它给了你一些东西。后者是在对象上执行的,就像给你的新狗起名或给它取骨头一样。你知道吗

这个问题可能会也可能不会帮助您理解什么是方法: What's the difference between a method and a function?

物体的行为总是对外部刺激作出反应。在OO中,消息由“something”广播,对象以某种方式响应。如果消息是对信息的请求,它将触发对象的知识责任;如果消息是事件或请求做某事,它将触发行为责任。操作将取决于对象的状态和事件的性质。有时,事件包含系统当前总体状态的“快照”,该快照为要执行的对象操作提供上下文。请注意,无论对象做什么,它都不会影响其外部上下文。你知道吗

第三个责任是提供服务。大多数面向对象编程实际上都是为了满足服务的需要,服务只是传递给它们的上下文的转换,对对象本身没有任何影响。他们很少有行为或知识责任。你知道吗

在你的employee课堂上,你既有知识也有行为责任。类的一个实例将能够响应对雇员全名的请求,并以这样一种方式“行为”以改变其内部状态,即获得新的薪水。我唯一要更改的是将set_raise重命名为raise_salary,使其看起来不像setter方法。你知道吗

相关问题 更多 >