例1:                                 通过外部定义一个函数也可以传值进去

class OldboyStudent:

school='oldboy'

def choose_course(self):

print('is choosing course')

stu1=OldboyStudent()

stu2=OldboyStudent()

stu3=OldboyStudent()

def init(obj,x,y,z):               # 对象也是个名称空间,名称空间是用来存放对象自己独有是名字/属性 定义一个函数

obj.name=x                       # 定义个函数,传入个对象以及属性,把属性直接增加对象名称空间里

obj.age=y

obj.sex=z

init(stu1,'耗哥',18,'male')

# stu1.name='耗哥'

# stu1.age=18

# stu1.sex='male'

# stu2.name='猪哥'

# stu2.age=17

# stu2.sex='male'

init(stu2,'诸哥',17,'male')

# stu3.name='帅翔'

# stu3.age=19

# stu3.sex='female'

init(stu3,'帅翔',19,'female')

print(stu1.__dict__)

print(stu2.__dict__)

print(stu3.__dict__)

'''

class OldboyStudent:

school='lodboy'

def __init__(obj,x,y,z):                               #:__init__会在调用类时自动触发

obj.name=x                                     #stu1.name='浩哥'

obj.age=y                                            #stu1.age=18

obj.sex=z                                           #stu1.sex='male'

def choose_course(self):

print('is choosing course')

__init__方法:用于在调用类时/实例化时自动触发,为对象初始化自己独有的属性

一.调用类时发生两个事情:

1.创造一个空对象stu1

2.自动触发类中__init__功能的执行,将stu1以及调用类括号内的参数一同传入,如下:

stu1=OldboyStudent(‘浩哥’,18,‘male’)

#OldboyStudent.__init__(‘stu1’,‘浩哥’,‘18’,‘male’)

stu2=OldboyStudent(‘猪哥’,17,‘male’)

stu3=OldboyStudent(‘帅翔’,19,‘famale’)

2.对象的本质就是一个名称空间而已,对象名称空间是用存放对象自己独有的名字/属性,

而类中存放是对象们共有是属性   (属性=值)

print(stu1.__dict__)                    #查看stu1名称空间里传入的值/属性

print(stu2.__dict__)

print(stu3.__dict__)

二.属性的查找原则

类用两种属性:数据属性和函数属性

1.类的数据属性是所有对象共享的

2.类的函数属性是绑定给对象用的

先从对象自己的名称空间(容器:存放数据)里找,没有则去类中找,如果类和没有则报错

三.绑定关系

类:名称空间中定义的数据属性和函数属性都是共享给所有对象用的

对象:的名称空间中定义的只要数据属性,而且是对象自己所独有是数据属性

绑定方法:

1.类中定义的函数是类的函数属性,类可以使用,但使用的就是一个普通的函数而已,意味着需要完全遵循函数的参数规则,该传几个值就传几个值

2.类中定义的函数是共享给所有对象的,对象可以使用,而且是绑定给对象用

绑定给谁,就应该由谁来调用,谁调用就会将自己当做第一个参数传入

补充:类中定义的函数。类可以使用,但其实类定义的函数大多情况下都是绑定给对象用的,

所以在类中定义的函数都应该自带一个参数self

总结:

对象是一个高度整合的产物,整合数据与专门操作该数据的方法(绑定方法)

l=[1,2,3] #l=list([1,2,3])

# print(type(l))

l.append(4)         #list.append(l,4)

list.append(l,4)

print(l)

强调对象精髓:

对象不仅包含一系列数据(自己读独有的+与其他对象共有的),还包含专门操作该数据的方法

python对象属性是与数据有关的项目_python之对象产生,属性(定义的值)的查找原则,对象绑定关系...相关推荐

  1. python 简洁优雅的装饰数据类——dataclass(通过生成只有部分属性值的子类解决初始化时没有默认值必须传所有字段值的问题)

    首先安利一下 dataclass 给不太了解这个东西的小伙伴 分享一个写的不错的入门文章: 理解 Python 的 Dataclasses(一)(10min 左右即可看完) 我这里直接举一个栗子如下, ...

  2. python获取mysql中的数据供js调用_python 读取mysql数据至csv文件中,并发送邮件

    test 代码: #coding:utf-8 ''' Created on 2019年2月18日 @author: Administrator ''' import ConfigParser impo ...

  3. python切片操作 当所有数据都省略时_python疑难问题---13、Python切片操作

    python疑难问题---13.Python切片操作 一.总结 一句话总结: Python切片操作的核心就是:切片操作的时候先分析step,因为step正负表示方向,再看start_index和end ...

  4. python切片操作 当所有数据都省略时_Python切片操作

    利用python解决问题的过程中,经常会遇到从某个对象中抽取部分值的情况."切片"操作正是专门用于实现这一目标的有力武器.理论上,只要条件表达式得当,可以通过单次或多次切片操作实现 ...

  5. python从文件中读取数据时出现错误_Python 从文件中读取数据

    读取整个文件 # 案例:读取整个文件 # pi_digits.txt 3.1415926535 8979323846 2643383279 # file_reader.py with open ('p ...

  6. python中不同类型的数据不能相互运算_python数据类型和运算

    常见数据类型和运算 1 变量的命名规范 '''只能以字母,数字,下划线组成,不能以数字开头.命名时 避免与系统关键字重复,关键字:['and', 'as', 'assert', 'break', 'c ...

  7. python中不同类型的数据不能相互运算_Python第三课——数据类型与运算(2)

    hello大家好,我是你们的小蒟蒻鸭,终于终于有时间写博客了(虽然刚开始期末复习),真的非常非常抱歉,拖更太厉害了.反正还有一个月不到小蒟蒻就要放暑假了!!!(激动.jpg),蒟蒻保证会一周两篇,绝不 ...

  8. python写ini文件不能保持原有顺序问题_python 生成 xml文件 属性的顺序问题

    需求很奇葩. 文档示例 用python 的xml 导出的xml文件,相应的内容是 我们都知道,属性的顺序是不影响,xml值的读取的. 但是,就是有奇葩的需求,需求方还非常强势,说了不影响,但还是要求顺 ...

  9. 大量的数据做字符串匹配_Python Flashtext 实现大数据集下高效的关键词查找和替换...

    通常,我们使用Python 在文本中进行关键词查找或替换时,会使用 re 模块以正则的形式实现.在文本数量.文本内容.关键词数量较小时,该方法能够满足我们程序的功能.性能需要.但当在大规模的文本或者对 ...

最新文章

  1. oracle 计算公式解析,用PL/SQL如何实现公式解析计算
  2. vba 修改access表的链接地址_神奇的VBA编程:禁止修改Excel工作表名称
  3. 基于matlab的信号合成与分解,基于matlab的信号合成与分解
  4. 有BUG!!!慎用default文本
  5. java ee cdi_Java EE CDI处理程序方法示例
  6. 【HTML5】媒体元素标签audio video
  7. win11正式版iso镜像如何安装 windows11正式版iso镜像安装方法
  8. 深度学习自学(三十九):基于对抗网络判别能力正则化的半监督生成方法
  9. 【Firewalld(Iptables)】
  10. 拓端tecdat|R语言有限混合模型聚类FMM、广义线性回归模型GLM混合应用分析威士忌市场和研究专利申请、支出数据
  11. CPT205-Computer Graphics
  12. Scratch之猫和老鼠
  13. oracle startup open ora 03113,startup mount备库的时候报ORA-03113错误
  14. 银联二维码支付java 实现
  15. unity入门——实现一个简单的跑酷游戏(准备工作)
  16. Android 多平台AR SDK 集成使用
  17. 单反相机的传奇—佳能单反50年辉煌之路(连载十六)
  18. 基于ambarella安霸H.264编解码芯片的视频采集压缩系统
  19. Android Studio数据永久保存——SharedPreferences
  20. swift 引用swift_Swift Swift中的单元测试:基础知识

热门文章

  1. matlab2c使用c++实现matlab函数系列教程-sum函数
  2. UVA10838 The Pawn Chess
  3. .NET Core跨平台部署
  4. Know your weapons Ⅱ
  5. java词频统计——web版支持
  6. JAVA中的“抽象接口”
  7. inner join ,left join ,right join 以及java时间转换
  8. Interesting Finds: 2007.12.19
  9. Gnuplot的简介与常用操作
  10. [转载] python不允许使用关键字_Python中关键字global与nonlocal的区别