我的Python之旅第六天--面向对象初识
一、概念
类:是具有相同属性的技能的一类实物
对象:实例化的一个类,是类的具体体现
class Person:
'''内容'''
animal='高级动物'
soul='有思想'
#animal,soul为静态变量
def __init__(self,name,sex,eye,high,weight): #这是构造方法
self.name=name #属性
self.sex=sex
self.eye=eye
self.high=high
self.weight=weight
print(666)
def work(self): #动态变量,动态方法,方法
print(self)
print('人会工作')
二 操作静态变量的两种方式:
1 类名.__dict__方法 只能查看,不能增删改。
1.1 查看全部静态变量
print(Person.__dict__)
结果为:{'__module__': '__main__', '__doc__': '内容', 'animal': '高级动物', 'soul': '有思想', '__init__': <function Person.__init__ at 0x000002100833A8C8>, 'work': <function Person.work at 0x000002100833A950>, '__dict__': <attribute '__dict__' of 'Person' objects>, '__weakref__': <attribute '__weakref__' of 'Person' objects>}
1.2查看单个静态变量
print(Person.__dict__['animal'])
结果为:
高级动物
2 类名.变量名 可增删给查
2.1 查
print(Person.animal)
结果为:
高级动物
2.2 增加
Person.kind='有性格'
print(Person.kind)
结果为:
有性格
2.3 删
del Person.kind
三 类操作方法的两种方式
1 类名.dict方法名
print(Person.__dict__['work'](11))
结果为:
11
人会工作
None
2 类名.方法名()
Person.work(222)
结果为:
222
人会工作
3 如果类操作方法:类名.方法名()
只要创建一个类,里面的内容就已经加载到内存中
四 对象
1 概念
对象:类名() 实例化一个对象
2 实例化
实例化:类名加括号就是实例化,会自动触发__init__函数的运行,可以用它来为每个实例定制自己的特征
(1)实例化一个对象,在内存中产生一个对象空间
(2)自动执行init方法,并将这个空间对象<main.Person object at 0x0000000001F5ABE0> 传给self
(3)通过构造方法里的代码给空间对象添加一些属性,并返回给对象
例如:
p1=Person('张三','男','大眼睛',176,170)
print(p1.__dict__)
结果为:
{'name': '张三', 'sex': '男', 'eye': '大眼睛', 'high': 176, 'weight': 170}
五 对象操作属性变量的两种方式
1 对象.__dict__方法,只能查看不能增删改
p2=Person('李四','男','小眼睛',170,170)
print(p2.__dict__)
结果为:
{'name': '李四', 'sex': '男', 'eye': '小眼睛', 'high': 170, 'weight': 170}
2 对象.变量名,可增删改查
2.1 查
print(p2.name)
结果为:
李四
2.2 增加
p2.color='黄皮肤'
print(p2.color)
2.3 删除
del p2.name
print(p2.__dict__)
结果为:
{'sex': '男', 'eye': '小眼睛', 'high': 170, 'weight': 170, 'color': '黄皮肤'}
2.5 改
print(p2.__dict__)
p2.name='王麻子'
print(p2.__dict__)
结果为:
{'name': '李四', 'sex': '男', 'eye': '小眼睛', 'high': 170, 'weight': 170}
{'name': '王麻子', 'sex': '男', 'eye': '小眼睛', 'high': 170, 'weight': 170}
3 可以访问类的静态变量
3.1 查询全部变量
print(p2.__dict__)
{'name': '李四', 'sex': '男', 'eye': '小眼睛', 'high': 170, 'weight': 170}
3.2 查询单个变量,类名.变量名
print(p2.animal)
结果为:
高级动物
六 对象操作的两种方式
1 对象.方法名()
p2.work()
结果为:
<__main__.Person object at 0x0000025324099D68>
人会工作
print(p2.__dict__)
{'name': '李四', 'sex': '男', 'eye': '小眼睛', 'high': 170, 'weight': 170}
2 类名.方法名()
Person.work('abc')
abc
人会工作
七 类空间、对象空间
class Person:
animal='高级动物'
soul='有思想'
name='孙悟空'
def __init__(self,name,sex,eye,high,weight):
self.name=name
self.sex=sex
self.eye=eye
self.high=high
self.weight=weight
print(666)
def work(self,job):
print('人会工作')
p1=Person('alex','女','小眼睛',178,160)
print(p1.name)
print(p1.soul)
print(p1.__dict__)
print(p1.eye)
p1.work('IT')
print(p1.__dict__)
结果为:
666
alex
有思想
{'name': 'alex', 'sex': '女', 'eye': '小眼睛', 'high': 178, 'weight': 160}
小眼睛
人会工作
{'name': 'alex', 'sex': '女', 'eye': '小眼睛', 'high': 178, 'weight': 160}
可以看到self约定俗成叫self,不能改变
通过实例化对象查找属性时,先从对象空间找,没有则通过类对象指针从类空间找。
我的Python之旅第六天--面向对象初识的更多相关文章
- Python之旅Day7 面向对象&异常处理
########################################面向对象初识######################################### 面向对象简介 面向对象编 ...
- python基础学习笔记——面向对象初识
面向对象初识 python中一切皆对象. 类有两种: 新式类:在py3中所有类都是新式类 经典类:在py2中只有类本身继承了object类才叫做新式类,默认是经典类 class Person: cou ...
- Python之旅Day1 数据类型初识(数字|字符串|列表|数据运算) 编码 表达式(if...else|for|while)
初识PYTHON Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum(吉多·范罗苏姆)于 ...
- python之旅:面向对象进阶
一 isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(object) ...
- python之旅:面向对象之多态、多态性
一 多态 多态指的是一类事物有多种形态 eg:动物有多种形态:猫,狗,猪 class Animal: #动物类 def eat(self): #吃 pass def drink(self): #喝 p ...
- python之旅:面向对象之继承与派生
一 初识继承 编写类时,并非总要从空白开始.如果你要编写的类正好是另一个现成类的特殊版本,可使用继承来减少代码冗余,子类会“遗传”父类的属性,从而解决代码重用问题 什么是继承 继承是一种创建新类的方式 ...
- python之旅:面向对象的程序设计
一 面向对象的程序设计的由来 面向对象设计的由来见概述:http://www.cnblogs.com/moyand/p/8784210.html 二 什么是面向对象的程序设计及为什么要有它 面向过程的 ...
- python全栈开发-面向对象-初识
python_16_day 函数总结: https://www.processon.com/view/link/5b718274e4b0555b39e1055f 面向过程的程序设计的核心是过程(流水线 ...
- python全栈开发-面向对象-初识2
python_17_day 今日主要内容: 1.类空间,对象空间,查询顺序. 2.组合. 1.类空间,对象空间,查询顺序. class Person: animal = '高级动物' soul = ' ...
随机推荐
- Brown Mood Median Test
Brown-Mood Median Test 对于两独立样本尺度中的位置参数(中位数)检验问题: \(H_0: med_x = med_y\) \(H_1=med_x > med_y\) 在 ...
- 企业私有源代码上传github致入侵之大疆案判决了
事件简单回顾: 1.2017年8月28日,大疆宣布“大疆威胁识别奖励计划”,最高3万美元: 2.然而在此之前,大疆农业事业部某员工将企业私有源代码上传到了github: 3.就职于大疆竞对公司Depa ...
- 从壹开始微服务 [ DDD ] 之九 ║从军事故事中,明白领域命令验证(上)
烽烟 哈喽大家周二好呀,咱们又见面了,上周末掐指一算,距离 圣诞节 只有 5 周的时间了(如果你还不知道为啥我要提圣诞节这个时间点,可以看看我的第二系列开篇<之一 ║ D3模式设计初探 与 我的 ...
- Access2007数据库下载地址与AccessHelper
链接:https://pan.baidu.com/s/1pLzOlTv0nqSbhzujHZht1w 提取码:1m9l AccessHelper: using System; using System ...
- 机器学习——KMeans聚类,KMeans原理,参数详解
0.聚类 聚类就是对大量的未知标注的数据集,按数据的内在相似性将数据集划分为多个类别,使类别内的数据相似度较大而类别间的数据相似度较小,聚类属于无监督的学习方法. 1.内在相似性的度量 聚类是根据数据 ...
- (leetcode:选择不相邻元素,求和最大问题):打家劫舍(DP:198/213/337)
题型:从数组中选择不相邻元素,求和最大 (1)对于数组中的每个元素,都存在两种可能性:(1)选择(2)不选择,所以对于这类问题,暴力方法(递归思路)的时间复杂度为:O(2^n): (2)递归思路中往往 ...
- 前端笔记之NodeJS(一)初识NodeJS&内置模块&特点
一.NodeJS简介 NodeJS是开发服务器后台的东西,和PHP.JavaEE.python类似,和传统的浏览器的关注DOM的JS完全不同,将JavaScript触角伸到了服务器端.内核是Chrom ...
- 安全性测试入门:DVWA系列研究(一):Brute Force暴力破解攻击和防御
写在篇头: 随着国内的互联网产业日臻成熟,软件质量的要求越来越高,对测试团队和测试工程师提出了种种新的挑战. 传统的行业现象是90%的测试工程师被堆积在基本的功能.系统.黑盒测试,但是随着软件测试整体 ...
- 8天入门docker系列 —— 第二天 通过一个aspnetcore程序加深对容器的理解
我们知道容器是一个打包了应用和相关依赖的盒子,那怎么去操控这个盒子呢? 这一篇我通过一个简单的aspnetcore程序来加深对盒子的理解,使用之前先 安装一下Docker的环境. 一:Docker的安 ...
- 设计模式之面向切面编程AOP
动态的将代码切入到指定的方法.指定位置上的编程思想就是面向切面的编程. 代码只有两种,一种是逻辑代码.另一种是非逻辑代码.逻辑代码就是实现功能的核心代码,非逻辑代码就是处理琐碎事务的代码,比如说获取连 ...