Python进阶(十四)----空间角度研究类,类与类之间的关系
Python进阶(十四)----空间角度研究类,类与类之间的关系
一丶从空间角度研究类
对象操作对象属性
class A():
address = '沙河'
def __init__(self, name):
self.name = name
def func(self): # 给对象封装一个属性
if self.name == 'ls':
self.age = 100
obj = A('ls') #实例化一个对象
# 类的外部给对象封装属性
obj.sex = '男'
print(obj.__dict__) #查看对象空间的属性
# 类的内部,使用方法 给对象封装属性
obj.func()
print(obj.__dict__) #查看对象空间的属性
###总结:
# 对象的属性不仅可以在`__init__`里面添加,还可以在类的其他方法或者类的外面添加。
类名操作类中的属性
class A():
address = '沙河'
def __init__(self, name):
self.name = name
def func1(self):
A.country = '中国'
obj = A('ls') #实例化一个对象
## 类 外部给类封装属性
A.temp='39℃' # 给类添加一个属性
print(A.__dict__) #查看类名称空间的属性
## 类 内部调用函数封装属性
A.func1(obj) # 由于类要调用类中方法必须传递参数给self.在这里可以把obj对象作为参数传递给self,相当于对象调用了这个方法(obj.func1())
print(A.__dict__) #查看类名称空间的属性
###总结:
# 类的属性不仅可以在类内部添加,还可以在类的外部添加。
类对象指针
所谓指针:当实例化生成对象时,会产生一个对象指针,存在对象名称空间. 用于指向类空间
class A():
class_attr='123'
def __init__(self,name):#实例化过程自动执行__init__方法,给对象封装属性,还封装一个类对象指针
self.name=name
a=A() #实例化对象 a
a.class_attr # a是对象的名称空间,不存在class_attr属性. 这时类对象指针指向类名称空间,类名称空间存在class_attr属性.a对象就能获得class_attr属性.
#总结:
# 类对象指针就是存在对象中,用于指向回生成对象的这个类.
对象取值顺序
对象查找属性的顺序:先从对象空间------> 类空间------> 父类空间
类名取值顺序
类名查找属性的顺序:先从本类空间-------> 父类空间
二丶类与类的关系
依赖关系:
依赖关系 (主从关系) 将一个类的类名,或者对象传给另一个类的方法中
class Elephant():
def __init__(self, name):
self.name = name
def open(self, ref): # 依赖关系, ref是形参,接收另一个类生成的对象
print(f'{self.name}
Python进阶(十四)----空间角度研究类,类与类之间的关系的更多相关文章
- Python进阶----反射(四个方法),函数vs方法(模块types 与 instance()方法校验 ),双下方法的研究
Python进阶----反射(四个方法),函数vs方法(模块types 与 instance()方法校验 ),双下方法的研究 一丶反射 什么是反射: 反射的概念是由Smith在1982年首次提出的 ...
- 孤荷凌寒自学python第二十四天python类中隐藏的私有方法探秘
孤荷凌寒自学python第二十四天python类中隐藏的私有方法探秘 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天发现了python的类中隐藏着一些特殊的私有方法. 这些私有方法不管我 ...
- day22——从空间角度研究类、类与类之间的关系
day22 从空间角度研究类 何处添加对象属性 在类的______init______可以添加 class Human: mind = "有思想的" def __init__(se ...
- Python进阶(十五)----面向对象之~继承(单继承,多继承MRO算法)
Python进阶(十五)----面向对象之~继承 一丶面向对象的三大特性:封装,继承,多态 二丶什么是继承 # 什么是继承 # b 继承 a ,b是a的子类 派生类 , a是b的超类 基类 父类 # ...
- J2EE进阶(十四)超详细的Java后台开发面试题之Spring IOC与AOP
J2EE进阶(十四)超详细的Java后台开发面试题之Spring IOC与AOP 前言 搜狐畅游笔试题中有一道问答题涉及到回答谈谈对Spring IOC与AOP的理解.特将相关内容进行整理. ...
- Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式
Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式 目录 Pycharm使用技巧(转载) Python第一天 安装 shell 文件 Py ...
- Python进阶(十六)----面向对象之~封装,多态,鸭子模型,super原理(单继承原理,多继承原理)
Python进阶(十六)----面向对象之~封装,多态,鸭子模型,super原理(单继承原理,多继承原理) 一丶封装 , 多态 封装: 将一些东西封装到一个地方,你还可以取出来( ...
- 初学 Python(十四)——生成器
初学 Python(十四)--生成器 初学 Python,主要整理一些学习到的知识点,这次是生成器. # -*- coding:utf-8 -*- ''''' 生成式的作用: 减少内存占有,不用一次性 ...
- Python第二十四天 binascii模块
Python第二十四天 binascii模块 binascii用来进行进制和字符串之间的转换 import binascii s = 'abcde' h = binascii.b2a_hex(s) # ...
随机推荐
- webpack配置css浏览器前缀
webpack打包时,css自动添加浏览器前缀.我们需要用到一个Loader:postcss-loader,和一个插件:autoprefixer 安装 npm i postcss-loader aut ...
- Centos7.5 php7.2 安装pdo_sqlsrv 连接 sql server(转)
Centos7.5 php7.2 安装pdo_sqlsrv 连接 sql server 转:https://blog.csdn.net/gdali/article/details/82912542 ...
- python之terminaltables
from terminaltables import AsciiTable, DoubleTable, SingleTable from colorclass import Color, Window ...
- Flask 上传下载文件
上传文件示例代码 #encoding:utf8 from werkzeug.utils import secure_filename from flask import Flask,render_te ...
- Des加解密工具
import java.security.Key; import java.security.Security; import java.util.Date; import javax.crypto. ...
- OPMS是什么?
OPMS OPMS项目+OA管理系统 OPMS管理系统是意思是PMS+OA,项目+办公管理.符合日常项目和OA管理,特别适合扁平化管理的微中小企业. OPMS采用是Beego框架和Bootstrap前 ...
- 领域模型/DDD领域驱动设计
http://www.fanyilun.me/2018/04/08/%E8%B0%88%E8%B0%88%E9%A2%86%E5%9F%9F%E5%BB%BA%E6%A8%A1/ http://www ...
- shell脚本检查是否存在tun0虚拟网卡,若不不存在服务器更改port,并重启服务器,客户端修改port,并重新启动客户端
openvp 客户端 /home 目录下各脚本文件名 [root@jira home]# ls openvpn_server_restart.sh openvpn_tunnel_monitor.sh ...
- spring boot前后端参数传递方式
使用spring boot2X做后端,postman做前端测试 1.获取json字符串 @RestController public class Demo { @RequestMapping(&quo ...
- centos7 spark2.3.1集群搭建
1.安装jdk 2.安装scala 参照jdk的安装 3.ssh 免密码登录 4.安装hadoop 以上四步请参照 centos7 安装hadoop2.7.6(分布式) 5.安装spark 1) ...