zoukankan      html  css  js  c++  java
  • [python]-类与对象-上

    【类】是一个函数包。类中可以放置函数和变量,然后类中的函数可以很方便的使用类中的变量

    1、类的定义

    2、类中方法的调用

    在类中被定义的函数被称为类的【方法】,描述的是这个类能做什么。我们使用类名.函数名()的格式,就可以让类的方法运行起来。

    3、类中变量的调用

    在类中被定义的变量被称为类的【属性】。使用类名.变量名的格式,可以把类中的属性的值提取出来

    4、类中变量新增和修改

    有两种途径来修改或者新增类属性

    第一种方法 从内部,用类方法去修改或者新增,另一种从外部,用类.变量名=xx,直接新增或者修改类属性

    1)从外部增加/修改属性

    类A()是一个空类(里面的pass语句代表“什么都不做”),利用类A.变量1,我们在外部给类A()添加了一个类属性变量1,然后使用print语句把类属性打印了出来。

     案例2:

    先利用input函数从外部接收了一个字符串,并通过赋值的方式保存为了类属性类.变量。然后利用类方法类.打印类属性()打印出了这个外部输入的字符串。

    2)从内部增加/修改属性

    类.增加并打印类属性()接收外部输入的字符串,然后新增为类属性。

    5、类的使用举例

    6、类变量和类方法

    ① 第一个格式@classmethod的中文意思就是“类方法”,@classmethod声明了函数1是类方法,这样才能允许函数1使用类属性中的数据。

    ② 第二个格式cls的意思是class的缩写。如果类方法函数1想使用类属性(也就是类中的变量),就要写上cls函数1的第一个参数,也就是把这个类作为参数传给自己,这样就能被允许使用类中的数据。

    ③ 第三个格式是cls.变量。类方法想使用类属性的时候,需要在这些变量名称前加上cls.

    另外,当类中的函数【不需要】用到类中的变量时,就不要用@classmethodclscls.三处格式,否则就是占着茅坑不拉屎,终端也会给你报错。(没错,就是这么傲娇~)

    正确的案例

     7、类方法同时使用内部参数和外部参数

     8、类方法调用其他类方法

     综合题目练习

    1、录入员工信息,如果姓名不正确给出提示

    2、打印学生信息

    3、根据员工的kpi给出评绩

    # 创建一个人事系统类
    class hrSystem:
    # 创建存储员工名字的变量 name
    name = ''
    # 创建存储员工工资的变量 salary
    salary = 0
    # 创建存储员工绩效的变量 kpi
    kpi = 0

    # 定义录入员工信息的类方法
    @classmethod
    def record(cls, name, salary, kpi):
    cls.name = name
    cls.salary = salary
    cls.kpi = kpi

    # 定义打印员工信息的类方法
    @classmethod
    def print_record(cls):
    if cls.check_name(): # 以 cls.check_name() 的返回值(0或1)作为判断条件。
    print(cls.name + '的工作信息如下:')
    print('本月工资:' + str(cls.salary))
    print('本年绩效:' + str(cls.kpi))

    # 定义根据 kpi 评奖的类方法
    @classmethod
    def kpi_reward(cls):
    if cls.kpi > 95:
    print('恭喜' + cls.name + '拿到明星员工奖杯!')
    elif cls.kpi <= 95 and cls.kpi >= 80:
    print('恭喜' + cls.name + '拿到优秀员工奖杯!')
    else:
    print('很遗憾' + cls.name + '这次没有评上奖杯,希望来年努力工作,勇创佳绩!')

    # 检查录入名称是否正确的类方法
    @classmethod
    def check_name(cls):
    if cls.name not in ['bob', 'candy', 'jony', 'kelly']:
    print('录入错误!' + cls.name + '不是本公司员工!')
    return 0 # 设置返回值为0
    else:
    print('录入正确~')
    return 1 # 设置返回值为1

    # 验证结果的代码
    hrSystem.record('spy', 3000, 60)
    hrSystem.print_record()

  • 相关阅读:
    Codeforces Round #218 (Div. 2) C题
    Codeforces Round #217 (Div. 2) c题
    求组合数
    hdu 4539(状态压缩dp)
    poj 2923(状态压缩dp)
    项目管理
    java 实现单向链表
    sql
    设计模式
    自己写了一个解析json为table的工具类
  • 原文地址:https://www.cnblogs.com/mml-blog/p/10629288.html
Copyright © 2011-2022 走看看