若是把对象比做一个“饼干”,类就是制造这个饼干的“模具”。ssh
咱们经过类定义数据类型的属性(数据)和方法(行为),也就是说,“类将行为和状态打 包在一块儿”。ide
对象是类的具体实体,通常称为“类的实例”。类看作“饼干模具”,对象就是根据这个“模 具”制造出的“饼干”。函数
从一个类建立对象时,每一个对象会共享这个类的行为(类中定义的方法),但会有本身的属 性值(不共享状态)。更具体一点:“方法代码是共享的,属性数据不共享”。this
Python中,“一切皆对象”。类也称为“类对象”,类的实例也称为“实例对象”。spa
定义类的语法格式以下:指针
class 类名:code
类体orm
要点以下:对象
1. 类名必须符合“标识符”的规则;通常规定,首字母大写,多个单词使用“驼峰原则”。blog
2. 类体中咱们能够定义属性和方法。
3. 属性用来描述数据,方法(即函数)用来描述这些数据相关的操做。
【操做】一个典型的类的定义
#类的定义 class Student: #类名通常首字母大写,多个单词采用驼峰规则 def __init__(self,name,score): #self必需要有,必须位于第一个参数 self.name = name self.score = score def say_score(self): #self必需要有,必须位于第一个参数 print('姓名是:{0},分数是:{1}'.format(self.name,self.score)) s1 = Student('jack','100') #经过类名()调用构造函数 s1.say_score() #其余操做 print(dir(s1)) #得到对象的全部属性、方法 print(s1.__dict__) #对象的属性字典 class Man: pass #空语句 print(isinstance(s1,Student)) #判断“对象”是否是“指定类型” print(isinstance(s1,Man))
运行结果:
姓名是:jack,分数是:100
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'name', 'say_score', 'score']
{'name': 'jack', 'score': '100'}
True
False
类是抽象的,也称之为“对象的模板”。咱们须要经过类这个模板,建立类的实例对象,然 后才能使用类定义的功能。
过一个 Python 对象包含三个部分:id(identity 识别码)、type(对象类型)、 value(对象的值)。
如今,咱们能够更进一步的说,一个 Python 对象包含以下部分:
1. id(identity 识别码)
2. type(对象类型)
3. value(对象的值)
(1) 属性(attribute)
(2) 方法(method)
建立对象,咱们须要定义构造函数__init__()方法。构造方法用于执行“实例对象的初始化工 做”,即对象建立后,初始化当前对象的相关属性,无返回值。
__init__()的要点以下:
1. 名称固定,必须为:__init__()
2. 第一个参数固定,必须为:self。 self指的就是刚刚建立好的实例对象。
3. 构造函数一般用来初始化实例对象的实例属性,以下代码就是初始化实例属性:name 和score。
def __init__(self,name,score):
self.name = name #实例属性
self.score = score
4. 经过“类名(参数列表)”来调用构造函数。调用后,将建立好的对象返回给相应的变量。 好比:s1 = Student('张三', 80)
5. __init__()方法:初始化建立好的对象,初始化指的是:“给实例属性赋值”
6. __new__()方法: 用于建立对象,但咱们通常无需重定义该方法。
7. 若是咱们不定义__init__方法,系统会提供一个默认的__init__方法。若是咱们定义了带参 的__init__方法,系统不建立默认的__init__方法。
注:Python中的self 至关于C++中的 self 指针, JAVA和C#中的this 关键字。Python 中self必须为构造函数的第一个参数,名字能够任意修改。但通常遵照惯例,都叫作 self。
(一)实例属性:
实例属性是从属于实例对象的属性,也称为“实例变量”。他的使用有以下几个要点:
1. 实例属性通常在__init__()方法中经过以下代码定义:
self.实例属性名 = 初始值
2. 在本类的其余实例方法中,也是经过self 进行访问:
self.实例属性名
3. 建立实例对象后,经过实例对象访问:
obj01 = 类名() #建立对象,调用__init__()初始化属性
obj01.实例属性名 = 值 #能够给已有属性赋值,也能够新加属性
(二)实例方法:
实例方法是从属于实例对象的方法。实例方法的定义格式以下:
def 方法名(self [, 形参列表]):
函数体
方法的调用格式以下:
对象.方法名([实参列表])
要点:
1. 定义实例方法时,第一个参数必须为self。和前面同样,self 指当前的实例对象。
2. 调用实例方法时,不须要也不能给self 传参。self 由解释器自动传参。
函数和方法的区别:
1. 都是用来完成一个功能的语句块,本质同样。
2. 方法调用时,经过对象来调用。方法从属于特定实例对象,普通函数没有这个特色。
3. 直观上看,方法定义时须要传递self,函数不须要。
实例对象的方法调用本质:
其余操做:
1. dir(obj)能够得到对象的全部属性、方法
2. obj.__dict__ 对象的属性字典
3. pass 空语句
4. isinstance(对象,类型) 判断“对象”是否是“指定类型”