day_14类和对象

1.面向对象编程

1.1编程

1.面向过程编程---->算法,逻辑(数学逻辑)
2.函数式编程---->函数
3.面向对象编程---->类和对象(生活)

2.类的声明

2.1类的定义

类是相同属性和相同功能的对象的集合(抽象的)
对象是类的实例(具体的)
例如:人(类)成龙(对象)中国人(子类)

2.2类的声明

格式:

class 类名(父类列表):
    类的说明文档
    类的内容

说明:

class->python中的关键字
类名-->标识符,不能是关键字;类名使用驼峰式命名,并且首字母大写
    驼峰式命名:如果一个名字由多个单词组成,第一个单词首字母小写,后面的单词首字母大写
    PEP8命名规范:所有字母小写
(父类列表)-->继承语法,让说明的类继承括号中的父类。这个结构可以省略,让当前类继承python中的基类:object
类的说明文档-->注释,对类进行说明
类的类容-->包含属性(存储数据的变量)和方法(函数)
    方法:声明在类中的函数
class Person:
"""人类"""
def eat(self):
    print("吃饭")

2.3对象的声明

格式:

对象名 = 类名()
对象名 -->变量名
类名-->必须是声明过的类
p1=Person()
p2=Person()

3.对象方法

类的内容包含属性和方法,方法分为对象方法、类方法、静态方法

3.1对象方法

直接声明在类中的函数就是对象方法。对象方法都有一个默认参数self,需要使用对象来调用
对象调用:对象.方法名()。调用对象方法的时候,不需要给self传值,系统会自动将当前对象传递给self。
self:谁调用当前的对象方法,self就指向谁。self就是当前类的对象,类的对象能做的,self都能做。

class Person:
    def eat(self):
        print("self:",self)
        self.sleep()
    def sleep(self):
        print("睡觉")
        
p1 =Person()
print("p1",p1)
p1.eat()
# p1 <__main__.Person object at 0x0000022FF8955FD0>
# self: <__main__.Person object at 0x0000022FF8955FD0>
# 睡觉

4.构造方法

4.1定义

构造方法就是函数名和类名一样的方法,作用是用来创建对象的。
声明类时,系统会自动创建构造方法
创建对象的过程:调用构造方法在内存中开辟空间创建对象,并且会自动调用init方法去对这对象进行初始化;最后将创建好的对象的地址返回

4.2__init__方法

对象方法
不需要手动调用,创建完对象后,会被自动调用

class Dog:
    def __init__(self):
        print("……")
        

d1 = Dog()
# ……

4.3带其他参数的init方法

_init_方法的参数要通过构造方法来传。构造方法的实参会传递给init方法的形参

class Person:
    def __init__(self,name):
        print(name)


p1 = Person("小明")
#”小明“

5.对象的属性

类的内容包含属性和方法,属性又分为对象属性和类的字段
属性:用来在类中去保存数据的变量
对象属性:属性会因为对象的不同而不同,这种属性就需要声明成对象属性;对象属性要通过对象来使用

5.1对象属性的声明(重点)

1.必须声明在_init_方法中
2.声明的格式:self.属性名 = 初值

5.2对象属性的使用

格式:对象.属性

class Person:
    def __init__(self,name ="小鲜肉"):
        self.name = name
        self.age = 1
        self.sex = "男"


p1 = Person()
p1.name = "小鲜肉1"
print(p1.name)
#小鲜肉1

6.对象属性的增删改查

class Student:
    def __init__(self,name = "",age = 0,stu_id = "001" ):
        self.name = name
        self.age = age
        self.stu_id=stu_id
        
        
s1 =Student()

6.1查(获取对象的属性的值)

方法1:对象.属性(对象不存在时报错AttributeError)
print(s1.name)
方法2:getattr(对象,属性名,默认值),属性不存在时返回默认值,如果没有设置默认值,属性不存在时还是会报错。
print(getattr(s1,name,"默认值"))
方法3:对象._getattribute_(属性名);属性不存在会报错

6.2增加/修改(给对象增加/修改属性)

注意:给对象增加属性,只会添加到当前对象中。不会影响当前类的其他类
(属性不存在就增加,存在就修改)
方法1:对象.属性 = 值
方法2:setattr(对象,属性名,属性值)
方法3:对象._setattr_(属性名,属性值)

6.3删除(删除对象属性)

注意:只删除当前对象的属性,对其他对象没影响
方法1:del 对象.属性
方法2:delattr(对象,属性名);属性不存在会报错
方法3:对象._delattr_(属性名)

7.对象的使用

在python中所有的数据都是对象,所有的变量存储的都是对象的地址
将对象给别的变量赋值,stu1 = stu2,赋对象地址,import copy;stu3 = copy.copy(stu1),产生新的对象
想不返回对象的地址,可用_str_:

def __str__(self):
    return str(self.__dict__)
    #return "ksjfj"
    #return self.name

return后为self.dict时,返回对象的所有属性和属性值,return后有别的字符串时,就返回该字符串,只能是字符串。

8.slots魔法

类的字段:对象属性,类的字段,声明在类中函数外的变量就是类的字段。不会因对象的变化而改变,如人的总数。使用时要通过类来使用:类.字段
_slots:用来约束当前类的对象的属性有那些
_slots
(可以有的属性,如:"name"),其中的属性不一定全用,但绝对不能有其他属性

9.内置属性

1.类._name---->获取当前类的名字
2.类._doc
---->获取类的说明文档
3.对象._class---->获取对象的类
4.类._dict
---->获取当前类的所有的字段,以字典的形式返回,(函数名也是字段)
5.对象._dict---->获取当前所有属性和其对应的值
6.类._module
---->获取当前类所在的模块名
7.类._bases_---->获取当前类的父类,返回的是一个元祖,元祖的对象是类

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

推荐阅读更多精彩内容