一. 面向对象初识

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

二. 类,对象

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. 浅谈log4j-3-不同输出样式

    public static void main(String[] args) { Logger logger=Logger.getLogger(Appendable.class); //设置输出等级 ...

  2. Java 如何实现线程间通信?(notify、join、CountdownLatch、CyclicBarrier、FutureTask、Callable )

    转自:https://mp.weixin.qq.com/s?__biz=MzI4Njc5NjM1NQ==&mid=2247486499&idx=1&sn=d3f2d6959df ...

  3. ios-UITableView无内容时,不显示多余的分隔线

    效果如上. 只要补上以下方法: //设置多于的分割线 -(void)setExtraCellLineHidden: (UITableView *)tableView { UIView *view = ...

  4. 【shell编程】之基础知识-常用命令

    一.Shell echo命令 Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出.命令格式: echo string 您可以使用echo实现更复杂的输出格式控制. ...

  5. POJ1417 True Liars

    题意 Language:Default True Liars Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 6392 Accep ...

  6. 从 Godaddy 转移域名到 Namesilo

    域名本来是在 Godaddy 上注册的,首付很便宜,但是续费时发现是个坑,续费一年是 102 元,再加上隐私保护 60元/年,总共一年需要 160 元,续费贵而且一点优惠也没. 对比下其他商家一年只要 ...

  7. python-xlsxwriter模块绘制表格

    #coding: utf-8 import xlsxwriter workbook=xlsxwriter.Workbook('chart.xlsx') worksheet=workbook.add_w ...

  8. Zabbix-2.4-安装-1

    前言 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.zabbix组件主要分两个: zabbix-server和zabbix-agent.支持的监控协议有I ...

  9. AI三巨头获2018年图灵奖!

    ACM 宣布,2018 年图灵奖获得者是号称深度学习三巨头的 Yoshua Bengio, Yann LeCun 和 Geoffrey Hinton,得奖理由是:他们在概念和工程上取得的巨大突破,使得 ...

  10. [转]linux中vim命令

    在vi中按u可以撤销一次操作 u      撤销上一步的操作 ctrl+r 恢复上一步被撤销的操作 在vi中移动光标至: 行首:^或0 行尾:$ 页首:1G(或gg) 页尾:G(即shift+g) 显 ...