引子:类的对象在内存中的表示
def dog(name,dog_type):
def bark(d):
print(d,'wang wang wang ...')
data = {
'name':name,
'type':dog_type
'bark':bark
}
调用方法:
d1 = dog('小哈','哈士奇')
d1['bark'](d1)

可以阻止不同类型角色的方法混用
但是同类角色也有不同的地方,这时候快速开发等等需要引入面向对象的概念
对象间复杂的关系描述,有相同点也有不同点。需要面向对象的思想

1.类 略
2.对象 略
3.封装
作用防止内部对象数据不能被外部随意修改
使外部程序不需要关注对象内部的构造,只需要通过对象对外提供的接口进行访问
4.继承
5.多态
“一个接口,多种实现”

------------------------

class Dog(object):
country = 'JP' #全局变量,通过类修改后,所有对象全改,通过对象修改只是单个对象改了
def __init__(self,name):
self.NAME = name #成员属性
def sayhi(self):
print('hello, I am a dog',self.NAME)

self表示对象本身,NAME为类的成员属性

d = Dog("a") # Dog(d,"a")
d2 = Dog("b")

类-->实例化--->实例对象
__init__ #构造函数
self.name = name #成员属性
def sayhi() #方法
* 私有属性外部不能直接访问,两个下划线定义,属于该对象内部私有。
self.__heart = "Normal"
如果想让私有属性只能被读 不能被改可以
def get__heart(self):
return self.__heart
强制访问私有属性:r1._Role__heart r1对象名,Role类名,__heart私有属性
* 公有属性:所有属于该类的对象都可以访问的属性,属于该类。(常量)country
实例化之前就已经存在,可以通过 类名.共有属性去访问
通过类名去改country,那么以后所有通过对象去访问的country都改了
通过某实例去改,实际是在r1内存中加了一个country
r1.country=CN 只有r1对象改了,其他没有变还是JP

* 成员属性,self.NAME等属性,属于对象本身。

注意:country,sayhi在内存中只有一份,对象调用的时候都是把对象的引用传给类中的方法调用。

可以看出方法也是公有的。例如sayhi只有一份。
如果要改成私有方法(每个对象单独的一份)需要:
def private(self):
print("private")
r1.sayhi = private
r1.sayhi(r1)

python面向对象的特点,类定义等,私有属性、公有属性、成员属性的更多相关文章

  1. Python面向对象总结及类与正则表达式

    Python3 面向对象 一丶面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 方法:类中定义的函数. 类变 ...

  2. Python面向对象之接口类(抽象类)

    Python面向对象之接口类(抽象类):就是制定一个规范. 比如定义了一个接口类(抽象类)(他们是不可以进行实例化的,这就是他为什么是制定一个规范的原因). 他的定义是需要abc模块,要变的就是他的方 ...

  3. Python面向对象06 /元类type、反射、函数与类的区别、特殊的双下方法

    Python面向对象06 /元类type.反射.函数与类的区别.特殊的双下方法 目录 Python面向对象06 /元类type.反射.函数与类的区别.特殊的双下方法 1. 元类type 2. 反射 3 ...

  4. Python面向对象 --- 新旧式类、私有方法、类属性和类方法、静态方法

    一.Python面向对象中的新旧式类 1)新式类(推荐使用):在定义类时,类后边括号里要继承基类(object).在python3.x中若没有指定父类,会默认使用的是object作为基类:在pytho ...

  5. Python面向对象1:类与对象

    Python的面向对象- 面向对象编程 - 基础 - 公有私有 - 继承 - 组合,Mixin- 魔法函数 - 魔法函数概述 - 构造类魔法函数 - 运算类魔法函数 # 1. 面向对象概述(Objec ...

  6. python面向对象 : 抽象类(接口类),多态,封装(私有制封装)

    一. 抽象类(接口类) 与java一样, python也有抽象类的概念但是同样需要借助模块实现,抽象类是一个特殊的类, 它的特殊之处在于只能被继承, 不能被实例化. 从设计角度去看, 如果类是从现实对 ...

  7. Python面向对象编程、类

    一.面向对象编程 面向对象--Object Oriented Programming,简称oop,是一种程序设计思想.在说面向对象之前,先说一下什么是编程范式,编程范式你按照什么方式来去编程,去实现一 ...

  8. python 面向对象专题(五):私有成员、类方法、静态方法、属性、isinstance/issubclass

    https://www.cnblogs.com/liubing8/p/11325421.html 目录 Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/issubc ...

  9. Python面向对象-概念、类、实例

    OOP——Object Oriented Programming,面向对象编程,是一种程序设计思想.该思想将对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 区别于面向过程的程序设计即把计 ...

  10. python面向对象的多态-类相关内置函数-类内置魔法函数-迭代器协议-上下文管理-04

    多态 一种事物具备不同的形态 例如:水 --> 固态.液态.气态 多态:# 多个不同对象可以相应同一个对象,产生不同的结果 首先强调,多态不是一种特殊的语法,而是一种状态,特性(多个不同对象可以 ...

随机推荐

  1. oracle-扫盲贴:存储过程实现增删改查

    原文引入:http://blog.csdn.net/yangzhawen/article/details/8617179 oracle-扫盲贴:存储过程实现增删改查 分类: oracle2013-02 ...

  2. python-----删除文件到回收站

    python删除文件一般使用os.remove,但这样删是直接删除文件,不删到回收站的,那么想删除文件到回收站怎么办? 这时,就需要使用shell模块了 from win32com.shell imp ...

  3. ModuleNotFoundError: No module named 'PIL'

    错误:ModuleNotFoundError: No module named 'PIL' 解决办法: pip install Pillow

  4. 使用Google Closure Compiler全力压缩代码(转)

    JavaScript压缩代码的重要性不言而喻,如今的压缩工具也有不少,例如YUI Compressor,Google Closure Compiler,以及现在比较红火的UglifyJS.Uglify ...

  5. Linux 进程间通讯方式 pipe()函数 (转载)

    转自:http://blog.csdn.net/ta893115871/article/details/7478779 Linux 进程间通讯方式有以下几种: 1->管道(pipe)和有名管道( ...

  6. [NOI2004]cashier 郁闷的出纳员

    Description OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常 ...

  7. USB接口大百科:看完你就分得清充电线了

    http://tech.ifeng.com/a/20151116/41507221_0.shtml

  8. C# 相关概念

    解决方案 在磁盘上由 .sln 文件表示,是一个或多个相关项目的容器. 例如,如果为 Python 应用程序编写 C++ 扩展,该 C++ 项目可以驻留在同一解决方案中. 解决方案还可以包含 Web ...

  9. 全面学习ORACLE Scheduler特性(5)Schedules调度Programs执行的Jobs

    3.2 Schedules调度Programs执行的Jobs 通过schedule调度program的执行的job,看到这样的形容是不是让你彻底晕头了,就说明你还是没搞明白10g中SCHEDULERS ...

  10. C++中图片重命名

    非常简单的小程序,满足自己的需求. #include <iostream> #include <fstream> #include<sstream> using n ...