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语言比较灵活即支持面向对象编程也支持面向函数式编程. 面向过程编程 ...
随机推荐
- [转+自]disable_functions之巧用LD_PRELOAD突破
写在前面: 通过知乎的一篇艰难的渗透提权,引发了一些对于disable_funcionts绕过的思考,虽然在暑假日记中记载了四种绕过disable_functions,比如com组件,pcntl_ex ...
- 【题解】P1972 [SDOI2009]HH的项链 - 树状数组
P1972 [SDOI2009]HH的项链 声明:本博客所有题解都参照了网络资料或其他博客,仅为博主想加深理解而写,如有疑问欢迎与博主讨论✧。٩(ˊᗜˋ)و✧*。 题目描述 \(HH\) 有一串由各种 ...
- 使用docker安装codimd,搭建你自己的在线协作markdown编辑器
目录 一.前言 二.codimd是什么? 2.1 源于hackmd的超好用markdown编辑器 2.2 codimd的作用 三.安装和使用 3.1 安装前需要知道的 3.2 安装步骤 3.2.1 创 ...
- python-trade
https://tool.lu/pyc/在线反编译pyc import base64 correct = 'XlNkVmtUI1MgXWBZXCFeKY+AaXNt' flag = base64.b6 ...
- docker企业级镜像仓库Harbor管理
Harbor概述 Harbor是由VMWare公司开源的容器镜像仓库.事实上,Harbor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括: ...
- javescrip内嵌样式与外联样式怎么做?
对于前端初学者,个人JS样式常用的有两种:内嵌样式 ,外联样式:下面通过一个简单的鼠标点击出现设定的验证数字为例进行演示: 先看下效果: 鼠标点击前效果: 鼠标点击后效果: 图中的这个ojbk是我js ...
- C6 C7的开机启动流程
C6开机启动流程 1.内核引导,加电自检(通电后检查内核):检查bios的配置,检测硬件 装好系统之后才会进行以下内容 MBR 引导 (3.2.1...) GRUB菜单 (选择不同的系统)(按e,进入 ...
- Vagrant (二) - 日常操作
立即上手 上一节中,我们介绍了怎样安装 Vagrant,安装本身并不困难.本章节中我们首先要快速上手,以便获得一个直观的概念: 建立一个工作目录 打开命令行工具,终端工具,或者iTerm2等,建立一个 ...
- canvas 绘图api的位置问题
很久没碰canvas了,今天因为canvas绘图的为之问题浪费了一些时间. 我们知道canvas的默认宽高是300X150嘛. 实际使用的时候当然是自定义一个高宽啦. 通常我们会习惯性地在js中通过c ...
- extend()和append()区别
extend()和append()都可以用来添加. 例: a = [1,2,3,4,5,6] b = [7,8,9,10] c = {'aa':123,'bb':456,'cc':789} 1. ...