class Employee:#类 模板
raise_count = 1.04 #类变量 每个实例共享的变量
num_of_emps = 0
def __init__(self, first, last, pay):#self 就是当前构建实例的自己 1实例变量 2构造方法 3自动调用 4 self当前实例 5 初始化要用的参数 用于后面的方法
self.first = first
self.last = last
self.email = first + '.' +last + '@c.com'
self.pay = pay
Employee.num_of_emps += 1
def fullname(self): #当前实例方法
return '{}{}'.format(self.first,self.last)
def apply_raise(self):
self.pay =int(float(self.pay) * self.raise_count)
# 类方法 返回类的实例 处理一些特殊的东西
@classmethod#可以访问类变量实例变量不能用
def set_raise_count(cls,count):
cls.raise_count = count
@classmethod
def from_string(cls,emp_str):
first, last, pay = emp_str.split('-')
return cls(first, last, pay)
@staticmethod#静态方法 不用传入self 参数 不能访问实例变量 和类变量 类行为不行 可以 和类没什么关系
def is_workday(day):
if day.weekday() == 5 or day.weekday() == 6:
return False
return True
emp_1 = Employee('test','use1','5000')#模板下的实例
emp_2 = Employee('test','use2','5000')
import datetime
my_date = datetime.date(2020,8,1)
print(my_date)
print(Employee.is_workday(my_date))
# emp_2.pay = '6000'#改变对应 实例 的变量
# print(emp_1.fullname())#记得加框
# print(emp_2.fullname())
# emp_str_1 = 'John-Doe-7000'
# new_emp_1 = Employee.from_string(emp_str_1)
# print(new_emp_1.email)
# Employee.set_raise_count(1.5)
# print(Employee.raise_count)
# print(emp_1.raise_count)
# print(Employee.__dict__)#属性
# print(emp_1.__dict__)
# emp_1.raise_count = 1.05
# print(Employee.raise_count)
# print(emp_1.raise_count)
#print(Employee.num_of_emps)
# print(emp_1.pay)
# emp_1.raise_count = 2
# emp_1.apply_raise()
# print(emp_1.pay)