Python OOP-类与实例、类变量、类方法与静态方法

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)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值