一. 面向对象初识

  我们在生活中做事都是面向过程的,前面实现一些基本逻辑功能代码也是用面向过程的语句实现的,后来学了函数,把这些功能又装到了函数里。但用面向过程的方法去写程序,只能实现一个功能,我们要实现很多功能时,需要写很多个代码块,每一个代码块的作用域都是全局的,要相对一个功能进行改动,还要考虑与其它代码块的联系,这样就造成了代码的可扩展性和维护性。那么装到函数里就好了吗?装到函数里变量只能作用于函数里,其他的函数无法使用到该函数的变量。这时可以用面向对象的程序设计方法解决这些问题。面向对象的核心是对象,用对象来操控类里面的方法(函数)和变量,加上类还具有继承、封装、多态三大特性,提高了代码的复用性和规范性。

二. 类,对象

1. 类

  语法:  class 类名:

        类体

  类体:两部分:变量部分(静态变量),方法(函数)部分

#定义一个类
class name:
pass

2. 对象

   类名()就是对象, 类名()的这个过程:实例化的过程(创建一个对象的过程),

class name:
pass
name() # 对象创建

三. 类,对象调用类中的变量和方法.

1. 类调用类中的变量和方法

(1) __dict__方法(操作类中的静态变量):只能查询不能增、删、改。

class Person:
mind = '有思想'
belif = '有信仰'
animal = '高级动物' print(Person.__dict__) # 查询类Person中所有的内容,展现形式是字典.
print(Person.__dict__['belif']) # 查询类Person中的变量'belif'
# Person.__dict__['belif'] = '无信仰' # 修改变量'belif'的值会报错

(2). 万能的点: .

class Person:
mind = '有思想'
belif = '有信仰'
animal = '高级动物'
def work():
print('')
def money():
print('') print(Person.animal) # 高级动物
print(Person.mind) # 有思想
Person.mind = '没有思想' # 修改变量'mind'的值,可以通过Person.__dict__查看修改后的内容
Person.pay = '货币交换' # 增加变量'pay'和它的值,可以通过Person.__dict__查看增加后的内容
Person.say = '语言交流'
print(Person.work()) # 也可以调用类中的方法(函数),一般不用类名去操作
print(Person.__dict__) # 查看类中所有的内容

2. 对象调用类中的变量和方法

  __init__方法是一个特殊的方法,只要类名+() 产生一个对象,自动执行类中的__init__方法,并把类的地址传给方法里的第一个参数,约定把第一个参数定为'self', 再给对象封装相应的属性.

(1) __dict__ 查询对象中的所有的内容

(2)  万能的点: .

class Person:
mind = '有思想'
belif = '有信仰'
animal = '高级动物'
def __init__(self, name,age,hobby):
self.name = name
self.age = age
self.hobby = hobby
print(name,age,hobby)
def work(self):
print('会工作')
return self
def money(self):
print('会消费')
print(self) ret = Person('jack',22, '敲键盘') # 类名+() 的这个过程:实例化的过程(创建一个对象的过程)
# jack 22 敲键盘
print(ret) # Person()创建一个对象空间,把这个空间的地址赋值给ret
# <__main__.Person object at 0x0000021248F46550>
print(ret.__dict__) # 查询对象中所有的内容: {'name': 'jack', 'age': 22, 'hobby': '敲键盘'}
print(Person.work(111)) # 调用方法,并把111传给self,(一般通过对象调用类的方法,而不是类)
 # 会工作 # # print(Person.money()) 类调用方法时不传参数会报错
ret.work()  # 对象可以直接调用类中的方法不用给self传参
# 会工作

python: 面向对象:类和对象调用类中的变量和方法的更多相关文章

  1. OC 对象调用属性或实例变量或方法的细节。

    1.成员变量可以理解为所有在类的头上声明的,无论是@interface.@implementation下用大括号括起来或者是用@property声明的变量都可以称作这个类的 成员变量,只是在@impl ...

  2. c++中的类的对象与类的指针

    以上内容来自:http://wenku.baidu.com/link?url=haeRBhswlEcqddk48uW8YVMsdFNWsllimn_dzUYchb6G9NdT4pqgluCpnLQId ...

  3. 类和对象在JVM中是如何存储的,竟然有一半人回答不上来!

    前言 这篇博客主要来说说类与对象在JVM中是如何存储的,由于JVM是个非常庞大的课题,所以我会把他分成很多章节来细细阐述,具体的数量还没有决定,当然这不重要,重点在于是否可以在文章中学到东西,是否对J ...

  4. C++类的对象和类的指针的区别

    #include <iostream> #include <string> using namespace std; class Student { public: stati ...

  5. 在子类中,若要调用父类中被覆盖的方法,可以使用super关键字

    在子类中,若要调用父类中被覆盖的方法,可以使用super关键字. package text; class Parent {    int x;    public Parent()    {      ...

  6. java中static变量和方法的总结

    转自:http://blog.csdn.net/haobo920/article/details/5921621 java中static变量和方法的总结 java中一切皆是对象 一个类中对象的定义一般 ...

  7. Qt中静态变量使用方法

    静态变量可以在各个页面之前使用 先定义一个用于存放静态变量的类 例如datavar 在datavar.h中添加如下代码 #ifndef DATAVAR_H #define DATAVAR_H #inc ...

  8. WOE:信用评分卡模型中的变量离散化方法(生存分析)

    WOE:信用评分卡模型中的变量离散化方法 2016-03-21 生存分析 在做回归模型时,因临床需要常常需要对连续性的变量离散化,诸如年龄,分为老.中.青三组,一般的做法是ROC或者X-tile等等. ...

  9. Python面向对象篇(1)-类和对象

    面向对象编程 1.编程范式   我们写代码的目的是什么?就是为了能够让计算机识别我们所写的代码并完成我们的需求,规范点说,就是通过编程,用特定的语法+数据结构+特殊算法来让计算机执行特定的功能,实现一 ...

随机推荐

  1. OpenGL编程-OpenGL框架-win32项目

    在win32项目中开发的程序 小知识: 控制台应用程序运行就是dos的界面 项目一般采用了可视化开发 开发出来的东西就像QQ之类的 是有窗口界面的 程序运行结果是这样的 源代码:对第45行进行覆盖 # ...

  2. Nginx——debug的使用

    个人理解,debug的用处在于可以更进一步地了解页面访问出现问题的原因 nginx的debug的功能需要在编译安装时使用–with-debug选项 ./configure --prefix=/usr/ ...

  3. DevExpress DateEdit控件选择精确到秒

    先看看下面的效果图: 设置以下属性 dateEdit1.Properties.VistaDisplayMode = DevExpress.Utils.DefaultBoolean.True; date ...

  4. git与github建立仓库连接步骤

    一.先对git 进行用户设置 首先你得在网上下载git软件并且安装,一路默认安装就好了,然后就可以开始本地仓库的建立了.打开你安装好的git, 在开始菜单里面找到git文件夹里面的git bash端 ...

  5. mina基础知识整理

    一.      简介: Apache Mina Server 是一个网络通信应用框架,Mina 可以帮助我们快速开发高性能.高扩展性的网络通信应用,Mina 提供了事件驱动.异步(Mina 的异步 I ...

  6. VMware虚拟机安装红帽系统无法上网解决办法(转)

    原文地址:https://www.aliyun.com/jiaocheng/146779.html 1.最近在vmware安装redhat 7.4虚拟机后无法上网,首先按照下文配置,能ping同宿主机 ...

  7. Centos6.7 运行 eclipse出错解决办法

    今天在centos下运行eclipse c++出现来点问题.主要原因是jdk点安装以及环境变量始终不对. 尝试在/etc/profile中手动配置,也没有成功. 做了如下步骤成功解决. 1.查看jdk ...

  8. linux zip删除指定文件和追加文件

    使用zip命令的-d参数即可删除zip包中的特定文件. 示例:假设有test.zip,包含_code(目录)._code.zip.readme.txt三个文件,现在要删除test.zip中的_code ...

  9. 支付宝内部功能调用APP的said说明

    追加: 支付宝收款码 alipayqr://platformapi/startapp?saId=20000123   微信扫一扫 weixin://scanqrcode (跳转微信扫一扫) 支付宝扫一 ...

  10. sqlalchemy操作----多表关联

    有二张表,一张作者表,一张书表,一个作者写多本书,一本书可以由多个作者写,与是通过新加一张关系表把他们联系起来 #!/usr/bin/env python # -*- coding: utf-8 -* ...