Python学习之路——类-面向对象编程
类
面向对象编程
通过类获取一个对象的过程 - 实例化
类名()会自动调用类中的__init__方法
类和对象之间的关系?
- 类 是一个大范围 是一个模子 它约束了事务有哪些属性 但是不能约束具体的值
- 对象 是一个具体的内容 是模子的产物 它遵循了类的约束 同时给属性赋上具体的值
类有一个空间 存储的是定义在class中的所有名字
每一个对象又拥有自己的空间 通过对象名.__dict__就可以查看这个对象的属性和值
print(alex.name) # print(alex.dict['name']) 属性的查看
alex.name = 'alexsb' # 属性的修改
alex.money = 100 # 属性的增加
del alex.money # 属性的删除练习类的创建和实例化
d = ['k':'v']
print(d,id(d))
d['k'] = 'vvvv'
print(d,id(d))修改列表\字典中的某个值,或者是对象的某一个属性 都不会影响这个对象\字典\列表所在的内存空间
实例化所经历的步骤
1.类名() 之后的第一个事儿:开辟一块儿内存空间
2.调用__init__把空间的内存地址作为self参数传递到函数内部
3.所有的这一个对象需要使用的属性都需要和self关联起来
4.执行完init中的逻辑之后,self变量会自动的被返回到调用处(发生实例化的地方)
dog类 实现狗的属性 名字 品种 血量 攻击力 都是可以被通过实例化被定制的
class Dog():
def init(self,name,blood,aggr,kind):
self.dog_name = name
self.hp = blood
self.ad = aggr
self.kind = kind小白 = Dog('小白',5000,249,'柴犬')
print(小白.dog_name)
print(小白.__dict__)
对象/实例 = 类名() => 实例化的过程
对象的属性/实例变量
类中的方法(函数) 有一个必须传的参数 self 对象
hasattr getattr setattr delattr 反射
- 实例对象
- 类
- 本模块 sys.modules[name]
- 其他模块
if hasattr(obj,'name'):
getattr(obj,'name')
找到tbjx对象 的c类 实例化一个对象
obj = getattr(tbjx,'C')()找到tbjx对象 的c类 通过对c类这个对象使用反射取到area
print(getattr(tbjx.C,'area'))找到tbjx对象 的c类 实例化一个对象 对对象进行反射取值
obj = getattr(tbjx,'C')('赵海狗')
print(obj.name)
print(getattr(obj,'name'))一次执行多个函数
def func1():
print('in func1')func_lst = [f'func{i}' for i in range(1,5)]
for func in func_lst:
getattr(sys.modules[__name__],func)()
反射应用
class User:
user_list = [('login','登录'),('register','注册'),('save','存储')]def login(self):
print('欢迎来到登录页面') def register(self):
print('欢迎来到注册页面') def save(self):
print('欢迎来到存储页面') # choose_dic = {
# 1: User.login,
# 2: User.register,
# 3: User.save,
# } while 1:
choose = input('请输入序号:\n1:登录\n2:注册\n3:存储\n').strip()
obj = User()
# choose_dic[int(choose)](obj)
getattr(obj,obj.user_list[int(choose)-1][0])()
# getattr(obj,obj.user_list[int(1)-1][0])()
Python学习之路——类-面向对象编程的更多相关文章
- Python学习-第三天-面向对象编程基础
Python学习-第三天-面向对象编程基础 类和对象 简单的说,类是对象的蓝图和模板,而对象是类的实例.这个解释虽然有点像用概念在解释概念,但是从这句话我们至少可以看出,类是抽象的概念,而对象是具体的 ...
- python学习笔记15(面向对象编程)
虽然Python是解释性语言,但是它是面向对象的,能够进行对象编程. 一.如何定义一个类 在进行python面向对象编程之前,先来了解几个术语:类,类对象,实例对象,属性,函数和方法. 类是对现实世界 ...
- Python学习之路9☞面向对象的程序设计
一 面向对象的程序设计的由来 见概述:http://www.cnblogs.com/linhaifeng/articles/6428835.html 二 什么是面向对象的程序设计及为什么要有它 面向过 ...
- Python学习札记(三十) 面向对象编程 Object Oriented Program 1
参考:OOP NOTE 1.面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. ...
- Python学习之路10☞面向对象进阶
一 isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 1 class Foo(objec ...
- python学习之路-8 面向对象之进阶
上篇内容回顾和补充 面向对象三大特性 封装 继承 多态 在python中没有多态的概念 变量的类型允许为多种数据类型称之为多态 # c#/java中的多态 # 伪代码 def func(int arg ...
- Python学习之路——类
类: 类是将抽象的实物进行的划分. 在现实世界中如果我们将: 人类包含:男人.女人.孩子.老人等动物类包含:小猫.小狗.小兔子等 在代码世界中我也可以分类,例如将相同功能的代码放到一起,这就是分类. ...
- Python学习札记(三十三) 面向对象编程 Object Oriented Program 4
参考:继承和多态 NOTE 著名的开闭原则: 对扩展开放:允许新增Animal子类: 对修改封闭:不需要修改依赖Animal类型的Animal_func()等函数. 1.eg. #!/usr/bin/ ...
- Python学习之路15☞socket编程
一 客户端/服务器架构 即C/S架构,包括 1.硬件C/S架构(打印机) 2.软件C/S架构(web服务) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 二 os ...
随机推荐
- Dubbo 和 Spring Cloud 的区别?
根据微服务架构在各方面的要素,看看 Spring Cloud 和 Dubbo 都提供了哪些支 持. Dubbo Spring Cloud 服务注册中心 Zookeep er Spring Cloud ...
- 接口是否可继承(extends)接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concrete class)?
接口可以继承接口,而且支持多重继承.抽象类可以实现(implements)接口,抽象类可继承具体类也可以继承抽象类.
- 为什么线程通信的方法 wait(), notify()和 notifyAll()被定 义在 Object 类里?
Java 的每个对象中都有一个锁(monitor,也可以成为监视器) 并且 wait(),notify() 等方法用于等待对象的锁或者通知其他线程对象的监视器可用.在 Java 的线程中 并没有可供任 ...
- spring-boot--lernning之自定义starters
思路: 1这个场景需要使用到的依赖是什么??? 2如何编写自动配置 @Configuration 指定这个类是一个配置类 @ConditionalOnXXXX 指定条件下成立的情况下自动配置类生效 @ ...
- centos 7环境下安装jdk
在此之前已经安装了xshell并能传输文件. 1.下载对应版本的jdk:jdk-8u191-linux-x64.tar.gz 2.上传到centos的目录下 3.解压jdk的gz包,命令: tar - ...
- 学习Cobbler(二)
Server端: 第一步,启动Cobbler服务 第二步,进行Cobbler错误检查,执行cobbler check命令 第三步,进行配置同步,执行cobbler sync命令 第四步,复制相关启动文 ...
- 学习zabbix(一)
一.zabbix监控简介 server: 通过收集snmp和agent发送的数据,写入数据库(MySQL,ORACLE),再通过 php+apache 在 web 前端展示. agent:主机通过安装 ...
- github 编写README时常用的写法
参考:https://github.com/HeTingwei/ReadmeLearn#%E7%BC%96%E5%86%99readme%E6%97%B6%E5%B8%B8%E7%94%A8%E7%9 ...
- 攻防世界 unserialize3
unserialize3 class xctf{ public $flag = '111'; public function __wakeup(){ exit('bad requests'); } } ...
- 详解 CSS 属性 - position
postion 属性定义了一个元素在页面布局中的位置以及对周围元素的影响.该属性共有5个值: position: absolute position: relative position: fixed ...