小编San*_*mar的帖子

__dict__ 对于未显示 @property 属性的对象

使用装饰器时,我通过“setter”装饰器设置一个属性,但是它没有显示在对象的dict 中。下面是我的代码

class Employee:
    def __init__(self, first, last):
        self.f_name = first
        self.l_name = last
        self.email = self.f_name + '.' + self.l_name + '@hotmail.com'
    
    @property
    def fullname(self):
        return ('{} {}'.format(self.f_name,self.l_name) )


    @fullname.setter
    def fullname(self, name):
        first, last = name.split(' ')
        self.f_name = first
        self.l_name = last
        self.email = self.f_name + '.' + self.l_name + '@hotmail.com'
        
emp_1 = Employee('Sandeep', 'Behera')
print(emp_1.__dict__)


emp_1.fullname = "Alex Smith"
print(emp_1.__dict__)

emp_1.age = 20
print(emp_1.__dict__)
Run Code Online (Sandbox Code Playgroud)

运行上面,结果是:

{'f_name': 'Sandeep', 'l_name': 'Behera', 'email': 'Sandeep.Behera@hotmail.com'}
{'f_name': 'Alex', 'l_name': …
Run Code Online (Sandbox Code Playgroud)

python oop python-decorators

2
推荐指数
1
解决办法
42
查看次数

标签 统计

oop ×1

python ×1

python-decorators ×1