Python--oop面向对象的学习1
类和对象的成员分析
·类和对象都可以存储成员,成员可以归类为所有,也可以归对象所有
·类存储成员时使用的是与类关联的一个对象
·独享存储成员时存储在当前对象中
·对象访问一个成员,如果对象中没有该成员,尝试访问类中的同名成员
如果对象中有此成员,一定使用该对象中的成员
·创建对象的时候,类中的成员不会自动放到对象当中,而是得到一个空的对象,没有成员
·通过对象对类中成员重新赋值或者通过对象添加成员,对应成员会被保存在对象中,而不会修改类成员
class student():
name = "claire"
age = 18
def say(self):
self.name = "lala"
self.age = 25
print(student.name)
print(student.age)
print(id(student.name))
print(id(student.age))
print("*"*20)
A = student()
print(student.__dict__)
print(A.__dict__)
A.name = "tony"
A.age = 20
print(A.name)
print(A.age)
print("*"*20)
print(id(A.name))
print(id(A.age))
claire
18
2633264420040
140709556217008
********************
{'__module__': '__main__', 'name': 'claire', 'age': 18, 'say': <function student.say at 0x000002651AF2BC80>, '__dict__': <attribute '__dict__' of 'student' objects>, '__weakref__': <attribute '__weakref__' of 'student' objects>, '__doc__': None}
{}
tony
20
********************
2633267041312
140709556217072
关于self
·self在对象的方法中表示当前对象本身,但是如果通过对象调用一个方法,那么该对象会自动传入到当前的第一个参数当中
·self并不是一个关键字,只是一个接受对象的普通参数,理论上用任何一个普通变量代替
·方法中有self形参的方法非绑定的方法,可以通过对象访问,没有self的是绑定类的方法,只能通过类访问
`使用类访问绑定类的方法时,如果类方法中需要当前类的成员,可以通过__class__来实现。--如下面的第三个脚本
class student():
name = "claire"
age = 18
def say(self):
self.name = "lala" #对象的name
self.age = 25 #对象的name
print("my name is {0}".format(self.name))
print("my age is {0}".format(self.age))
dandan = student()
dandan.say()
my name is lala
my age is 25
class student():
name = "claire"
age = 18
def say(self):
self.name = "lala"
self.age = 25
print("my name is {0}".format(self.name))
print("my age is {0}".format(self.age))
def sayagain():
print("hello,nice to see you again")
dandan=student()
dandan.say()
#dandan.sayagain() 会报TypeError: sayagain() takes 0 positional arguments but 1 was given
student.sayagain() #调用绑定类函数使用类名
my name is lala
my age is 25
hello,nice to see you again
class student():
name = "claire"
age = 18
def say(self):
self.name = "lala"
self.age = 25
print("my name is {0}".format(self.name))
print("my age is {0}".format(self.age))
print("lei's age is {0}.".format(__class__.age))
def sayagain():
print(__class__.name)
print(__class__.age)
print("hello,nice to see you again")
dandan=student()
dandan.say()
student.sayagain()
my name is lala
my age is 25
lei's age is 18.
claire
18
hello,nice to see you again
class A():
name="haha"
age=18
def __init__(self):
self.name ="dandan"
self.age = 20
def say(self):
print(self.name)
print(self.age)
class B():
name = "bbb"
age = 90
a = A() #此时,系统会默认把a作为第一个参数传入函数
a.say()
A.say(a) #此时self被a代替
A.say(A) #此时可以把A作为参数,直接调用了类
17 A.say(B) #此时传入的是类实例B,因为B具有name 和age属性,所以不会报错
dandan
20
dandan
20
haha
18
bbb
90
Python--oop面向对象的学习1的更多相关文章
- Python OOP面向对象
		
一.什么是面向对象的程序设计 1.面向过程 程序设计:核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么......面向过程的设计就好比精心设计好一条流水线,是一种机械式的思维方式. 优点是 ...
 - Python之面向对象编程学习
		
不知不觉,学到了python的面向对象编程思想.今天我们来讨论下面向对象编程的思想. 顾名思义,面向对象,就是面向于对象,这里所说的对象不是你现实生活中你的女朋友,你的老婆,你的爱人,在编程的世界里面 ...
 - 【我要学python】面向对象系统学习
		
第一节:初识类的定义和调用 c1.py #类 = 面向对象 #类 最基本作用:封装 #类中不仅可以定义变量 还可以定义函数等等,例: class student( ): name = ' ' age ...
 - Python OOP 面向对象
		
1.Python实现OOP可以概括为三个概念: 继承:基于Python属性查找 多态:在x.method中,method的意义取决于x的类型 封装:方法和运算符实现行为,数据隐藏是一种惯例 2.委托: ...
 - PyTorch框架+Python 3面向对象编程学习笔记
		
一.CNN情感分类中的面向对象部分 sparse.py super(Embedding, self).__init__() 表示需要父类初始化,即要运行父类的_init_(),如果没有这个,则要自定义 ...
 - python oop面向对象笔记
		
#coding:utf-8 class Person(object): def __init__(self,name,wage): self.name = name self.wage = wage ...
 - python面向对象编程学习
		
python面向对象编程 基本概念理解 面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作 ...
 - 如何吃透Python的面向对象(OOP)
		
本篇可乐和大家一起来吃透 Python 的面向对象,类和实例. 面向对象(OOP) 解释:面向对象它是一种编程的思想,将现实事物抽象化为编程对象. 举例说明:喝可乐 ① 选择自己根据配方买对应的材料 ...
 - python oop培训文档里面的 正宗oop、多个函数间反复return传参、多个文件无限复制粘贴扣字、无效废物滑稽类4种方式的例子。(2)
		
把文档里面说的几种范式发出来. 4种编程范式实现一个人吃喝拉撒长身体的代码.语法很简单,思想模拟了所有程序员写代码时候的代码规划设计想法. 0.我不反对复制粘贴的写法,可以百度搜索复制粘贴网上现有的, ...
 - Python基础—面向对象(初级篇)
		
一.什么是面向对象编程 面向对象编程(Object Oriented Programming,OOP,面向对象程序设计),python语言比较灵活即支持面向对象编程也支持面向函数式编程. 面向过程编程 ...
 
随机推荐
- Unity 游戏框架搭建 2019 (三十二、三十三) 类的命名 & 代码文件命名
			
昨天我们完成了第八个示例的第二个 MenuItem 菜单顺序的调整. 我们今天再往下接着调整. 我们来看下接下来的 MenuItem 代码如下: [MenuItem("QFramework/ ...
 - PHP反序列化漏洞总结
			
写在前边 做了不少PHP反序列化的题了,是时候把坑给填上了.参考了一些大佬们的博客,自己再做一下总结 1.面向对象 2.PHP序列化和反序列化 3.PHP反序列化漏洞实例 1.面向对象 在了解序列化和 ...
 - s3fs-fuse 把 s3-like 对象存储挂载到本地
			
s3fs-fuse 是一个采用 c++
 - 在项目中部署redis的读写分离架构(包含节点间认证口令)
			
#### 在项目中部署redis的读写分离架构(包含节点间认证口令) ##### 1.配置过程 --- 1.此前就是已经将redis在系统中已经安装好了,redis utils目录下,有个redis ...
 - MySQL主从数据库配置与原理
			
1.为什么要搭建主从数据库 (1)通过增加从库实现读写分离,提高系统负载能力 (2)将从库作为数据库备份库,实现数据热备份,为数据恢复提供机会 (3)根据业务将不同服务部署在不同机器同时又共享相同的数 ...
 - memcache的缓存原理和应用
			
缓存原理 Memcache采用键值对存储方式.它本质是一个大的 hash表,key的最大长度为255个字符,最长过期时间为30天.它的内存模型如下:Memcache预先将可支配的内存空间进行分区(Sl ...
 - How to skip all the wizard pages and go directly to the installation process?
			
https://stackoverflow.com/questions/22183811/how-to-skip-all-the-wizard-pages-and-go-directly-to-the ...
 - 闲置安卓设备搭建Linux服务器实现外网访问
			
title: 闲置安卓设备搭建Linux服务器实现外网访问 这是我搭过的第一个博客系统,写贴纪念一下 待博主整理好思路,将今天所用到的全部分享! 好吧,我就是穷.富人靠科技,穷人靠变异.我这种穷人是真 ...
 - axios的使用小技巧:如何绕过字符串拼接,直接传递对象
			
Vue.js官方推荐使用axios作为发送http请求的工具,在使用axios中,有些小技巧是不容易发现的.当我们不知道这些技巧时,我们可能会使用其他"奇技淫巧",比如,我们很容 ...
 - Express 文档(常见问题)
			
常见问题 我该如何构建我的应用程序? 这个问题没有明确的答案,答案取决于你的应用程序规模和所涉及的团队,为了尽可能灵活,Express在结构方面没有做出任何假设. 在你喜欢的任何目录结构中,路由和其他 ...