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(对象,'属性名') ----删除指定对象指定属性的值,属性不存在则报错

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,186评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,858评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,620评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,888评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,009评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,149评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,204评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,956评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,385评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,698评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,863评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,544评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,185评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,899评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,141评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,684评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,750评论 2 351

推荐阅读更多精彩内容