#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author : 九章
# @File : class_study.py
# @Software: PyCharm
# @Time : 2021/4/10 23:23
class Employee:
"""
定义员工类Employee,设置员工工资涨幅为1.05
"""
raise_rate = 1.05
def __init__(self, first, last, pay):
"""
初始化属性
:param first:姓
:param last:名
:param pay:工资
:param email:邮箱
"""
self.first = first
self.last = last
self.pay = pay
# 不推荐这种方式生成邮箱地址,因为用户名改了以后,邮箱不会变
#self.email = self.first + "_" + self.last + "@gmail.com"
@property
def email(self):
"""
最好是使用email方法去生成员工的邮箱,用户名改了以后,邮箱会跟着变
"""
return self.first + "_" + self.last + "@gmail.com"
@property
def fullname(self):
"""
显示全名:property是一种属性装饰器,正常使用是Employee.fullname()
加了装饰器就不需要加括号
"""
return "{0} {1}".format(self.first, self.last)
@fullname.setter
def fullname(self,name):
"""
全名分拆成名和姓,然后再赋值给 self.first 和 self.last
"""
self.first,self.last = name.split(' ')
def aply_raise(self):
"""
获取加倍后的工资
"""
self.pay = int(self.pay * self.raise_rate)
def __repr__(self):
return "Employee({0},{1},{2})".format(self.first, self.last, self.pay)
def __add__(self, other):
"""
计算两个员工工资之和
"""
return self.pay + other.pay
@classmethod
def reset_raise_rate(cls, rate):
"""
类方法:可直接修改该类和子类的属性,必须含有cls参数
"""
cls.raise_rate = rate
@staticmethod
def say(word):
"""
静态方法:不能含有self参数,可理解成一种函数
"""
return print(word)
class Developer(Employee):
raise_rate = 1.1
def __init__(self, first, last, pay, lang):
super(Developer, self).__init__(first, last, pay)
self.lang = lang
class Manager(Employee):
def __init__(self, first, last, pay, employees=None):
super().__init__(first, last, pay)
if employees == None:
self.employees = []
else:
self.employees = employees
def add_emp(self, emp):
if emp not in self.employees:
self.employees.append(emp)
def remove_emp(self, emp):
if emp in self.employees:
self.employees.remove(emp)
def show_emp(self):
"""
显示管理者下的所有开发者
"""
for emp in self.employees:
print("-->", emp.fullname)
Python面向对象编程
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 本系列主要学习Python的基本使用和语法知识,后续可能会围绕着AI学习展开。Python3 (1) Python...
- 获取对象信息 获取一个对象的引用时,如何知道这个对象的类型和拥有的方法。 使用type() 判断对象类型,可以使用...
- 第一部分 用特殊方法实现Python风格的类 为了实现更好的可扩展性,Python语言提供了大量的特殊方法,它们大...