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进阶(十四)----空间角度研究类,类与类之间的关系的更多相关文章

  1. Python进阶----反射(四个方法),函数vs方法(模块types 与 instance()方法校验 ),双下方法的研究

    Python进阶----反射(四个方法),函数vs方法(模块types 与 instance()方法校验 ),双下方法的研究 一丶反射 什么是反射: ​ 反射的概念是由Smith在1982年首次提出的 ...

  2. 孤荷凌寒自学python第二十四天python类中隐藏的私有方法探秘

    孤荷凌寒自学python第二十四天python类中隐藏的私有方法探秘 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天发现了python的类中隐藏着一些特殊的私有方法. 这些私有方法不管我 ...

  3. day22——从空间角度研究类、类与类之间的关系

    day22 从空间角度研究类 何处添加对象属性 在类的______init______可以添加 class Human: mind = "有思想的" def __init__(se ...

  4. Python进阶(十五)----面向对象之~继承(单继承,多继承MRO算法)

    Python进阶(十五)----面向对象之~继承 一丶面向对象的三大特性:封装,继承,多态 二丶什么是继承 # 什么是继承 # b 继承 a ,b是a的子类 派生类 , a是b的超类 基类 父类 # ...

  5. J2EE进阶(十四)超详细的Java后台开发面试题之Spring IOC与AOP

    J2EE进阶(十四)超详细的Java后台开发面试题之Spring IOC与AOP 前言   搜狐畅游笔试题中有一道问答题涉及到回答谈谈对Spring IOC与AOP的理解.特将相关内容进行整理.    ...

  6. Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式

    Python第十四天 序列化  pickle模块  cPickle模块  JSON模块  API的两种格式 目录 Pycharm使用技巧(转载) Python第一天  安装  shell  文件 Py ...

  7. Python进阶(十六)----面向对象之~封装,多态,鸭子模型,super原理(单继承原理,多继承原理)

    Python进阶(十六)----面向对象之~封装,多态,鸭子模型,super原理(单继承原理,多继承原理) 一丶封装 , 多态 封装:            将一些东西封装到一个地方,你还可以取出来( ...

  8. 初学 Python(十四)——生成器

    初学 Python(十四)--生成器 初学 Python,主要整理一些学习到的知识点,这次是生成器. # -*- coding:utf-8 -*- ''''' 生成式的作用: 减少内存占有,不用一次性 ...

  9. Python第二十四天 binascii模块

    Python第二十四天 binascii模块 binascii用来进行进制和字符串之间的转换 import binascii s = 'abcde' h = binascii.b2a_hex(s) # ...

随机推荐

  1. webpack配置css浏览器前缀

    webpack打包时,css自动添加浏览器前缀.我们需要用到一个Loader:postcss-loader,和一个插件:autoprefixer 安装 npm i postcss-loader aut ...

  2. Centos7.5 php7.2 安装pdo_sqlsrv 连接 sql server(转)

    Centos7.5 php7.2 安装pdo_sqlsrv 连接 sql server 转:https://blog.csdn.net/gdali/article/details/82912542   ...

  3. python之terminaltables

    from terminaltables import AsciiTable, DoubleTable, SingleTable from colorclass import Color, Window ...

  4. Flask 上传下载文件

    上传文件示例代码 #encoding:utf8 from werkzeug.utils import secure_filename from flask import Flask,render_te ...

  5. Des加解密工具

    import java.security.Key; import java.security.Security; import java.util.Date; import javax.crypto. ...

  6. OPMS是什么?

    OPMS OPMS项目+OA管理系统 OPMS管理系统是意思是PMS+OA,项目+办公管理.符合日常项目和OA管理,特别适合扁平化管理的微中小企业. OPMS采用是Beego框架和Bootstrap前 ...

  7. 领域模型/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 ...

  8. shell脚本检查是否存在tun0虚拟网卡,若不不存在服务器更改port,并重启服务器,客户端修改port,并重新启动客户端

    openvp 客户端 /home 目录下各脚本文件名 [root@jira home]# ls openvpn_server_restart.sh openvpn_tunnel_monitor.sh ...

  9. spring boot前后端参数传递方式

    使用spring boot2X做后端,postman做前端测试 1.获取json字符串 @RestController public class Demo { @RequestMapping(&quo ...

  10. centos7 spark2.3.1集群搭建

    1.安装jdk 2.安装scala 参照jdk的安装 3.ssh 免密码登录 4.安装hadoop 以上四步请参照   centos7 安装hadoop2.7.6(分布式) 5.安装spark  1) ...