类和对象

一、基本概念
1.对象:具有行为和属性 万物皆对象
2.类: 将需求的对象划分为不同的类,具有相同属性或者行为的对象被划分到一个类中。
3.类和对象之间的关系
类:模板 蓝图
对象: 实例,是具体的
类是对象的抽象,对象是类的具体实现
开发过程中,分析从对象开始,将对象分类,考虑类中的属性和行为。

类和类之间的关联:
(1)直接在init中进行强依赖关系的赋值,将参数(其他类的对象),变成自己的属性
(2)另外写方法,将其他类的对象,变为自己类的属性
如果其它类在当前类中使用不是很频繁,把其他类当成参数传入
如果使用频繁,需要把他变成self.属性

二、定义和初始化
1.类的定义
class 类名(父类(可以不写))
‘注释’
类体

对象名=() :括号中是否有参数,取决于init方法

2.类的属性和行为
属性:变量绑定的形式
行为:函数定义的方式

2.1 定义动态属性和行为

(1)定义动态属性
格式 对象
对象.属性名=属性值

(2)定义动态行为

动态创建属性和行为的局限:每一个对象都要单独赋予属性和方法

2.2定义类中的属性和方法(给实例定义属性和实例定义方法)
(1)定义实例方法

(2)定义实例属性:在实例化init方法中去初始化属性
放在init中进行实例化的属性,一定是强依赖的属性

(3)在实例行为中调用实例属性

3.类成员
实例属性 实例方法
类属性 类方法
静态方法

(1)类属性
实例属性:跟类无关,跟每一个实例相关,每个实例独有。
类属性:跟实例无关,跟类相关的属性,所有实例共享。

访问方式:
实例属性:实例.属性 类.实例属性(不能访问实例属性)
类属性: 类.属性 实例.属性

修改:
实例属性:实例.属性 修改
类属性: 类.属性 可以修改 实例.属性 不能修改,会在实例下新创建一个属性。

类属性的应用:定义所有对象都公用的属性。

(2)类方法
实例方法:跟实例相关,跟类没有关系,实例独享
类方法:跟具体实例无关,跟类有关,实例共享

类方法访问: 类.方法(推荐) 实例.方法
实例方法访问 : 类.方法(不推荐) 实例.方法

类方法的使用场合:
创建对象、复制对象

类属性、实例属性在类方法和实例方法中的调用

①类方法中访问类属性
类属性: 类名 . 类属性

②实例方法中访问类属性

③类方法访问实例属性
不合理:类方法为类服务

可以曲线访问,但是没有人这么用,记住不合理。

④实例方法访问实例属性(最重要,最常见)
使用self

(3)静态方法
静态方法跟类不相关,跟对象更不相关。
定义:需要使用@staticmethod装饰

静态方法访问:通过类名访问

关于类和实例的选择
类属性和实例属性:
需要分析 属性是所有对象共享的还是单个对象独享的
共享:类属性
独享:实例属性

类方法、实例方法、静态方法:
需要分析方法是为了哪个属性服务的

4.魔法方法
魔法方法 _ xx _
执行的时候不需要主动调用,当符合一定条件的时候自动调用。

(1)new 静态方法:在创建对象的时候,执行,是真正创建对象的方法,在方法中必须有return,如果没有return则不会执行init初始化方法,也不能成功创建对象。
(2)init : 在new执行完毕之后,对对象进行初始化的方法。
(3)del :当对象销毁的时候会自动调用方法。
(4)str :当调用内建函数str() format print会自动调用的方法,返回值是str
(5)repr :如果方法中没有定义str,却需要调用str,默认调用repr
(6)bytes :在调用bytes()方法时自动调用

5.动态属性操作
(1)hasattr(obj,name)

(2)setattr(obj,name,value)

(3)getattr(obj,name)

(2)(3)给对象进行动态赋值

(4)delattr(obj,name)
删除obj中的name属性

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值