学习笔记011 -面向对象

Python学堂011

一、面向对象

1、对象(object)
2、python就是一个面向对象得编程语言
3、数据从 硬盘->内存->CPU 运行
4、对象就是内存中专门用来存储数据得一块区域

对象的结构
ID(标识)
type(类型)
value(值)
面向过程

就是将程序的逻辑分解成一个一个的步骤;
通过对每个步骤来完成一个程序;
这种方式写代码只适用于一个功能(功能单一);
这种方式符合人类的思维逻辑,编写起来比较简单;
面向对象的编程语言,关注的是对象,而不注重过程,对于面向对象一切皆对象;
这个编码方式比较容易阅读,并且易于维护,容易复用。
但是编写的过程中不太符合常规思维,编写相对麻烦。

这个方式可以用:孩子妈妈给孩子买瓜来解决
	妈妈穿衣服穿鞋出门
	妈妈骑上电动车
	妈妈到超市门口放好电动车
	妈妈买西瓜
	妈妈结账
	妈妈骑电动车回家
	到家给孩子吃西瓜

1、找对象
2、搞对象

二、类的简介

名称:类 、 单词:class
开发过程中需要自己定义一些对象,那就是类;
类,简单理解就相当于一张图纸,在程序中我们需要根据类来创建对象
如果多个对象是通过一个类创建的,我们就称这些对象的一类对象

比如:int()、float()、bool()、str()......
		a = int(10) 等价于 a = 10	创建了一个int类的实例
定义类要大写开头(命名类使用大驼峰命名法)
语法:
	class 类名([父类])
		pass
class Myclass():
    pass
print(class Myclass)#<class '__main__.Myclass'> #<:class(类) main(表示主文件) Myclass(类名)>
使用MyClass来创建一个对象
mc、mc2、mc3、mc4 都是由MyClass这个类创建的对象, 它们都是一类对象
mc = Myclass()		mc就是通过MyClass创建的对象 mc是MyClass的实例
mc2 = Myclass()
mc3 = Myclass()
mc4 = Myclass()

print(mc,type(mc)) # <__main__.Myclass object at 0x000002C36D745520> <class '__main__.Myclass'>

三、类的说明

类也是一个对象;
类就是用来创建对象的对象;
类是type类型的对象,定义类实际上就是定义了一个type类型的对象;

现在通过MyClass创建的对象都是一个空对象;
可以向对象中添加变量,对象中的变量称为属性;
语法 对象.属性名 = 属性值

创建一个实例:
class Myclass():
    pass
mc = MyClass
mc2 = MyClass
mc.name = '葫芦娃'
mc2.name = ~~'葫芦娃救爷爷'~~
print(mc)
print(id(MyCalss),type(MyClass)) # <class 'type'>
print(mc.name)
print(mc2.name) # AttributeError: 'Myclass' object has no attribute 'name'

类的实例

四、类的定义

1、 对现实生活中事物的抽象;
2、 实际上所有的事物由两部分组成;
第1部分、数据(属性)
第2部分、行为(方法)
3、类和对象和实例对象都可以保持属性和方法;
4 、如果这个属性或者方法是所有实例共享的,则应该将其保存到类对象当中;
5、 如果这个属性或者方式是某个实例独有的,则应该保存到实例对象当中;
6、 一般情况下属性都保存到实例对象中;
7、 方法一般都保存到类对象中;

8、 在类中有代码块,我们可以定义变量和函数;
9、 在类中我们定义的变量,将会成为所有实例对象的公共属性 通过对象.属性名的方式访问;
10、 所有实例都可以访问这些变量;
11、 在类中也可以定义函数,类中定义的函数,我们称之为方法;
12、 这些方法也可以通过该类的实例来访问;
13、 函数会成为该类实例的公共方法,所有该类的实例都可以通过 对象.方法名()的方式调用;
14 、方法调用和函数调用的区别;
15、 如果是函数调用,你有几个形参,我就传递几个实参;
16、 如果是方法调用,默认传递一个形参,所以在定义方法的时候至少得有一个形参;
17、 当我们调用一个对象属性时,解释器会现在当前的对象寻找是否有结果,没有于则找类对象(相似:就近原则),如果类没有就报错;

定义一个类:
创建Person的实例
class Person:
	a = 1
	b = 2
	name1 = '葫芦娃'
	name2 = '葫芦娃的爷爷'
	def speak(a):
		print('一个一个送')
P1 = Person
P2 = Person
print(p1.a,p2.b)
P1.speak()

18、self参数在定义方法的时候会默认传递self参数;
self指的是类的实例;

 def __init__(self,page_queue,img_queue,*args,**Kwargs):
 	
     super(Procuder,self).__init__(*args,**Kwargs)
     self.page_queue = page_queue
     self.img_queue = ing_queue
class Person():
    name = '葫芦娃'
    # 方法每次被调用的时候,解释器会自动传递一个实参
    # 如果是p1调用,则第一个参数(a)就是p1对象
    # 如果是p2调用,则第一个参数(a)就是p2对象
    # 一般我们都会命名这个参数为self
    def speak(self):
        print('你好!我是%s'%self.name)

p1 = Person()
p2 = Person()

p1.name = '钢铁侠'
p2.name = '绿巨人'

p1.speak()
p2.speak()

print(p1,p2)
'''
输出的结果为:
你好!我是钢铁侠
你好!我是绿巨人
'''

未完待续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值