#!/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)
Python面向對象編程
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
相關閱讀更多精彩內(nèi)容
- 本系列主要學習Python的基本使用和語法知識,后續(xù)可能會圍繞著AI學習展開。Python3 (1) Python...
- 獲取對象信息 獲取一個對象的引用時,如何知道這個對象的類型和擁有的方法。 使用type() 判斷對象類型,可以使用...
- 第一部分 用特殊方法實現(xiàn)Python風格的類 為了實現(xiàn)更好的可擴展性,Python語言提供了大量的特殊方法,它們大...
- 類和實例 面向對象最重要的概念就是類(class)和實例(instance),類是抽象的模板,而實例是根據(jù)類創(chuàng)建出...