《Python》 面向对象初识
一、面向对象初识:
1、结构上理解:类由两部分组成
class A: # class是类的关键字,类名首字母默认大写
name = 'alex' # 静态属性,静态变量,静态字段
def func1(self): # 函数,动态属性,方法
pass
2、函数 vs 面向对象:
1、函数封装一个功能,而面向对象封装多个相关的功能。
2、面向对象抽象,它是一种思想,站在上帝的角度去理解它。
3、程序可扩展,对象都是一个个独立的,耦合性,差异性。
def register(argv):
pass def login(argv):
pass
def shoppingcar(argv):
pass class Shopping_Car:
def __init__(self): # 特殊方法
pass def register(self):
pass def login(self):
pass
def shoppingcar(self):
pass
函数 vs 面向对象
3、类,对象
类:具有相同属性或者功能的一类实物。
对象:对象是类的具体表现。
二、类名,对象的使用:
一个公共框架,一个公共模型
类名:
1、查看类中的所有属性及方法 __dict__(查看单个属性和方法也可以用__dict__[ ],但不建议用)
2、查看,(增删改)类中的某个,某些属性用(万能的点).
3、操作方法,一般不通过类名操作!!!
class Person:
animal = '高级动物'
walk_way = '直立行走'
language = '语言' def eat(self):
print('吃饭')
def word(self):
print('人类需要工作') print(Person.__dict__) # 查 所有的属性和方法
print(Person.animal) # 查
Person.animal = '低级动物' # 改
Person.name = 'alex' # 增
del Person.animal # 删
print(Person.name)
print(Person.animal)
Person.eat(12) # 执行一个方法
print(Person.word(123)) # 执行方法并返回 None
Person.age = 18
print(Person.age)
类的属性和方法的增删改查
对象:
实例化过程内部进行了三个阶段:
1、在内存中开辟了一个对象空间
2、自动执行类中的__init__方法,并且将对象空间自动传给self参数,其他参数手动传入
3、执行__init__方法,给对象空间封装相应的属性。
class Person: animal = '高级动物'
walk_way = '直立行走'
language = '语言' def __init__(self,name,age,eye): # 功能:给对象封装属性的。
self.name1 = name
self.age1 = age
self.eye1 = eye def eat(self):
print('该吃吃,该喝喝,啥事别忘心里搁') def work(self):
print('人类都需要工作。。。') obj = Person('alex',1000,'小眼睛') # 这个过程是一个实例化过程,他会实例化一个对象(他会在内存实例化一个对象空间)。
print(obj) # 对象空间的内存地址
print(obj.name1)
实例化对象空间
对象操作对象空间:
1、查看对象空间所有的属性 __dict__
print(对象名.__dict__)
2、对象操作对象的某个属性(增删改查)用(万能的点)
obj.sex = '男' # 增
del obj.eye1 # 删
obj.eye1 = '大一点' # 改
print(obj.name1) # 查 单个
print(obj.__dict_) # 查 全部对象(返回一个字典) # alex
# {'name1': 'alex', 'age1': 1000, 'eye1': '小眼睛'}
3、对象操作类空间的属性:只能查
print(obj.animal) # 现在对象空间找,没有的话到类空间里找
obj.animal = '低级动物' # 不能改变类空间的属性,所以是新增一个对象属性
print(obj.animal) # 打印的是对象空间里新增的属性
print(obj.__dict__)
print(Person.__dict__)
4、对象操作类空间的方法
print(obj) # 打印对象空间内存地址
obj.eat() # 对象操作类空间的方法
三、类名称空间,对象名称空间:
1、对象为什么能调用类中的属性与方法而且只是调用,不能改变?
先从自己空间找,没有此属性他会通过类对象指针去类空间找,类中找不到到父类中找
对象只能查看类中的属性,不能增删改类中的属性。
2、类能不能调用对象的属性? 不能
3、对象与对象之间可不可以互相调用?
同一个类实例化出来的对象之间是不能互相访问的
不同类实例化 对象有可能互相访问
给对象封装属性:对象名.__init__ (任意位置)
《Python》 面向对象初识的更多相关文章
- Python面向对象 | 初识
一.面向对象编程 类 : 具有相同属性和技能的一类事物 对象: 就是对一个类的具体的描述 实例化:类——>对象的过程 使用面向对象的好处: 使得代码之间的角色关系更加明确 增强了代码的可扩展性 ...
- python 面向对象-初识
一.分类 1.面向过程 2.面向函数 3.面向对象 二.类和对象 1.宏关 类是抽象的,对象是具体的 2.实例化 类->对象 3.类的作用 1)实例化成对象 实例化的过程,创建self对象,调用 ...
- 初识python面向对象
一.初识python面向对象: class Person: #使用class关键字定义一个类 age=0 #类变量(静态变量) def eat(self,food): #定义一个方法 self.age ...
- python递归 及 面向对象初识及编程思想
递归 及 面向对象初识及编程思想 一.递归 1.定义: 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. (1)递归就是在过程或函数里调用自身: (2)在使用递 ...
- python基础学习笔记——面向对象初识
面向对象初识 python中一切皆对象. 类有两种: 新式类:在py3中所有类都是新式类 经典类:在py2中只有类本身继承了object类才叫做新式类,默认是经典类 class Person: cou ...
- Python中面向对象初识到进阶
面向对象初识到进阶 # 面向对象结构: # class 类名: # def __init__(self,参数1,参数2): # self.对象的属性1 = 参数1 # self.对象的属性2 = 参数 ...
- Python面向对象01 /面向对象初识、面向对象结构、类、self、实例化对象
Python面向对象01 /面向对象初识.面向对象结构.类.self.实例化对象 目录 Python面向对象01 /面向对象初识.面向对象结构.类.self.实例化对象 1. 面向对象初识 2. 面向 ...
- python 面向对象专题(一):面向对象初识、面向对象结构、类、self、实例化对象
https://www.cnblogs.com/liubing8/p/11301344.html 目录 Python面向对象01 /面向对象初识.面向对象结构.类.self.实例化对象 1. 面向对象 ...
- python之面向对象初识
一.面向对象初识 1.结构上 面向对象分成两部分:属性.方法 class A: name = 'xiaoming' # 静态属性.静态变量.静态字段. def func1(self): # 函数.动态 ...
- python基础(17)继承类和面向对象初识
1.继承类 class Lm: money = 1000000 house = 5 def driver(self): print('会开车') class Mcb(Lm): def about_me ...
随机推荐
- IT人士级别的划分
IT领袖:年入过亿(例如任正非.马化腾.李彦宏.丁磊.马云等,包括期权股票以及投资理财等收入.) IT大哥:年入千万(级别次于以上几位大佬的公司老板,不缺钱,普遍对上一条里的人物羡慕嫉妒恨.) IT精 ...
- UVa 247 电话圈(Floyd传递闭包)
https://vjudge.net/problem/UVA-247 题意: 如果两个人相互打电话,则说他们在同一个电话圈里.例如,a打给b,b打给c,c打给d,d打给a,则这4个人在同一个圈里:如果 ...
- perl usage()和getopt
#!/usr/bin/perl#perl search.pl --infile Targets.Lung.Carcinoma.genelist.txt --homogene Homo_sapiens. ...
- SQL 存储过程中的IF_BEGIN_END作用域
USE [DB_NAME] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [DBO].[PROC_TEST_I ...
- 学以致用 ---- vue子组件→父组件通信
之前写过一篇关于 vue2.0中v-on绑定自定义事件 的随笔,但是今天实际应用的时候才发现根本就不理解,下面是实际工作中遇到的问题: [情景描述]页面中的[下拉搜索组件],因为多个页面中用到,所以抽 ...
- 一步一步实现JS拖拽插件
js拖拽是常见的网页效果,本文将从零开始实现一个简单的js插件. 一.js拖拽插件的原理 常见的拖拽操作是什么样的呢?整过过程大概有下面几个步骤: 1.用鼠标点击被拖拽的元素 2.按住鼠标不放,移动鼠 ...
- java日期获取前一天和后一天
import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import j ...
- 在每个节点填充向右的指针 Populating Next Right Pointers in Each Node
2018-08-09 16:01:40 一.Populating Next Right Pointers in Each Node 问题描述: 问题求解: 由于是满二叉树,所以很好填充. public ...
- C#对GZIP压缩和解压
/// <summary> /// 将Gzip的byte数组读取为字符串 /// </summary> /// <param name="bytes" ...
- Java知识集锦
Java知识集锦 一.Java程序基础 1.1 开发和运行环境 1.2 Java语言概述 二.Java语法基础 2.1 基础类型和语法 2.2 对象和类型 2.3 包和访问控制 三.数据类型及类型转换 ...