Python面向對象編程

#!/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參數(shù)
        """
        cls.raise_rate = rate

    @staticmethod
    def say(word):
        """
        靜態(tài)方法:不能含有self參數(shù),可理解成一種函數(shù)
        """
        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):
        """
        顯示管理者下的所有開發(fā)者
        """
        for emp in self.employees:
            print("-->", emp.fullname)
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容