面向对象编程(一)

对象的特征

  • 世间万物皆对象
  • 每个对象都是唯一
  • 对象具有属性行为
  • 对象具有状态
  • 对象分为类对象实例对象两大类
    类对象是具有相同属性和行为的实例对象的抽象;类对象就是实例对象的模板,实例对象是由类对象创建出来的。

面向对象编程的大体步骤

  • 抽象出类对象
  • 抽象出类对象的属性
  • 抽象出类对象的行为(方法)
  • 根据类对象创建实例对象
  • 通过实例对象访问属性和方法

定义类对象的语法格式:

class 类名 (object):
	#属性与方法

其中:
1.类名由一个或多个单词组合而成,每个单词的首字母大写且其余字母全部小写,例如:SomeClass。
2.(object)表示该类对象继承自Python内置的类对象object,Python中所有的类对象都继承自一个统一的基类:object。

属性:

  • 为了在创建实例对象后对其进行初始化(例如:给实例对象绑定一些属性),可以在类对象中定义一个名为__init__的特殊方法。这样,创建实例对象后就会自动调用特殊方法__init__。
  • 如果没有定义特殊方法__init__,或者定义了特殊方法__init__但是没有定义除self之外的形参,那么根据类对象创建实例对象时就不需要传入实参。
  • 如果在类对象中定义了特殊方法__init__,那么对于“类名([实参])”,会执行两大步:
    1.创建实例对象
    2.自动调用创建的实例对象的特殊方法__init__(创建的实例对象会作为实参被自动传递给特殊方法__init__的第一个形参self)。

初识类的方法:

类的方法与函数的区别:
 1.定义方法时,方法的第一个形参表示调用该方法的实例对象,第一个形参的名称通常是self,也可以是其它名称。
 2.调用方法时,系统自动将调用该方法的实例对象作为实参传递给第一个形参。第一个实参会传递给第二个形参,第二个实参会传递给第三个形参,以此类推。

实例属性

实例属性指的是实例对象所绑定的属性
绑定实例属性(给实例对象绑定属性)的方式有两种:

1.在类对象的内部(方法中)
 语法格式:self.属性名 = 属性值
 推荐在特殊方法__init__中进行绑定,这样,在创建实例对象后就会自动调用特殊方法__init__对实例对象进行初始化,从而绑定实例属性。如果在其它方法中进行绑定,可能需要手动调用方法后才会绑定。

2.在类对象的外部
 Python是动态语言,所以,在实例对象创建之后,可以对其动态地绑定属性
 语法格式:实例对象.属性名 = 属性值
 如果指定名称的实例属性已经存在,则是对实例属性进行修改。

访问实例属性的方式有两种:
1.在类对象的内部(方法中)
 语法格式:self.属性名
2.在类对象的外部
 语法格式:实例对象.属性名
之所以添加前缀“self”或“实例对象”,是为了表明实例属性被哪个实例对象所绑定。

同一个类对象的不同实例对象所绑定的实例属性是相互独立的。也就是说,给一个实例对象所绑定的实例属性,对于另一个实例对象是不起作用的。

实例对象. __ dict __可获得该实例对象所绑定的所有属性及其值的字典

类对象属性

类属性指的是类对象所绑定的属性。
绑定类属性(给类对象绑定属性)的方式有两种:
1.在类对象的内部(方法外)
 语法格式:属性名 = 属性值
2.在类对象的外部
 Python是动态语言,所以在类对象创建之后,可以对其动态地绑定属性。
 语法格式:类对象.属性名 = 属性值
 如果指定名称的类属性已经存在,则是对类属性进行修改。

访问类属性的方式有两种:
1.在类对象的内部(方法中)
 语法格式:类对象.属性名
2.在类对象的外部
 语法格式:类对象.属性名实例对象.属性名
 类对象的所有实例对象都有一个指向类对象的指针,所以,类对象的所有实例对象都可以访问类属性。之所以添加前缀“类对象”,是为了表明类属性被哪个类对象所绑定。

 访问实例属性和类属性都可以通过实例对象.属性名的方式。当通过实例对象.属性名的方式访问属性时,会先查找指定的实例对象中有没有指定名称的实例属性,如果没有,再查找对应的类对象中有没有指定名称的类属性。所以,当通过实例对象.属性名的方式访问属性时,如果实例属性和类属性同名,实例属性会屏蔽掉类属性。
 当通过实例对象.属性名 = 属性值的方式绑定属性时,这里的属性只是表示实例属性(因为类属性没有这样的绑定方式),所以,只会查找指定的实例对象有没有绑定指定名称的实例属性,如果没有则进行绑定,如果已经绑定了,则对属性值进行修改。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值