day13总结-类与对象

补充

三目运算符:

值1 if 表达式 else 值2 :如果表达式为True,整个表达式的值为值1,否则为值2

num = 10
a = 'oushu' if num % 2 == 0 else 'jishu'
print(a)         #oushu

类(class)

编程思想的转变

1.面向过程编程 ----算法

2.函数式编程 ----函数、模块

3.面向对象 ----类和对象

什么是类,什么是对象

类是拥有相同功能和相同属性的对象的集合 ----抽象的

对象就是类的实例 ----具体的

类的声明

1.语法

class 类名:

​ 类的内容

2.说明

class ----声明类的关键字,固定写法

类名 ----标识符,不能是关键字,要见名知义,采用驼峰式命名(单词首字母大写),首字母大写

student_name:一般变量命名

studentName:驼峰式命名

StudentName:类的命名

: ----固定写法

类的内容 ----主要包含:类的说明文档,属性(普通的变量),功能(方法,函数在类外面叫函数,在类里面就叫方法)

class Person:
    """定义人类"""
    pass

3.对象的声明

对象 = 类() ----创建指定的类对应的对象

4.类中的方法

声明在类中的函数就叫方法

类中的方法有三种:对象方法,类方法,静态方法

a.对象方法

直接声明在类里面的函数

有默认参数self:通过对象调用时,这个参数不用传,系统会自动将当前对象传递给self。(self,当前对象 --谁调用self就指向谁,当前类的对象能做的事self都能做

通过类的对象调用:对象.对象方法()

class Person:
    """定义人类"""
    #属性,方法
    def eat(self,food):
        print('人吃',food)
        self.study()
    def study()
        print('学习')

p1 = Person()
p1.eat('sala')   #系统自动给self传参

Person.eat('soda','sala') #不支持这样使用,需要给self赋值,这样self失去意义

b.类方法

声明函数前加@classmethod

有默认参数cls,通过类调用的时候这个参数不用传,系统会自动将当前类传递给cls

(cls,当前类 --谁调用就指向谁,当前类能做的事,cls都能做)

通过类来调用:类.类方法()

c.静态方法

声明函数前加@staticmethod

没有默认参数

通过类来调用:类.静态方法()

对象.静态方法()调用也可以,但要先创建对象,不建议这样使用

注意:

声明类的时候方法的选择:

  • 实现函数功能需要对象属性的时候就使用对象方法。
  • 实现函数的功能不需要对象属性但是需要类的相关操作就使用类方法
  • 实现函数的功能既不需要对象属性也不需要类的相关操作就使用静态方法

d.init方法

__init__是类默认继承的一个魔法方法(方法前后都有两个下划线'_'的叫魔法方法),用来初始化类。本质是对象方法,但是不需要程序员自己调用,会被自动调用。

通过类创建对象的时候(通过构造方法创建对象),系统会自动调用类中的__init__方法,并且构造方法中的实参会全部传给init方法。

创建对象的时候需不需要参数,需要几个参数,看这个类的init方法。

了解:声明类的时候系统会自动给我们创建一个函数,这个函数的函数名和声明的类名一样,这个函数叫构造方法。函数中会先在内存中开辟空间创建对象,然后用创建的对象去调用类的init方法,最后才将对象返回

5.类中的属性

类中的属性分为:对象属性和字段

字段

直接声明在类中的变量(除了函数)就叫字段。字段要通过'类.字段'的方式来使用。

当类中属性的值不会因为对象的不同而不同,这种属性就可以声明为类的字段。

对象属性

在init方法中以'self.属性 = 值'的形式来声明;

对象属性要通过'对象.属性'来调用

当属性的值会因为对象的不同而不同,使用对象属性

对象属性的操作

python中的对象属性支持增删改查

  1. 对象.属性 ----获取指定对象指定属性的值,如果属性不存在会报错
  2. getattr(对象,'属性名',默认值) ----获取指定对象指定属性的值,当属性不存在但有默认值的时候不会报错,并返回默认值,没有默认值的时候会报错。属性名要加引号
  • 增/改
  1. 对象.属性 = 值 ----当属性不存在就添加属性,当属性存在则修改属性的值
  2. setattr(对象,'属性名',值) ----当属性不存在就添加属性,当属性存在则修改属性的值。属性名要加引号
  1. del 对象.属性 ----删除指定对象指定属性的值,属性不存在则报错
  2. delattr(对象,'属性名') ----删除指定对象指定属性的值,属性不存在则报错

注意:对象属性的增删改查只针对单个对象。

你可能感兴趣的:(day13总结-类与对象)