python面向对象的特点,类定义等,私有属性、公有属性、成员属性
引子:类的对象在内存中的表示
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面向对象的特点,类定义等,私有属性、公有属性、成员属性的更多相关文章
- Python面向对象总结及类与正则表达式
Python3 面向对象 一丶面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 方法:类中定义的函数. 类变 ...
- Python面向对象之接口类(抽象类)
Python面向对象之接口类(抽象类):就是制定一个规范. 比如定义了一个接口类(抽象类)(他们是不可以进行实例化的,这就是他为什么是制定一个规范的原因). 他的定义是需要abc模块,要变的就是他的方 ...
- Python面向对象06 /元类type、反射、函数与类的区别、特殊的双下方法
Python面向对象06 /元类type.反射.函数与类的区别.特殊的双下方法 目录 Python面向对象06 /元类type.反射.函数与类的区别.特殊的双下方法 1. 元类type 2. 反射 3 ...
- Python面向对象 --- 新旧式类、私有方法、类属性和类方法、静态方法
一.Python面向对象中的新旧式类 1)新式类(推荐使用):在定义类时,类后边括号里要继承基类(object).在python3.x中若没有指定父类,会默认使用的是object作为基类:在pytho ...
- Python面向对象1:类与对象
Python的面向对象- 面向对象编程 - 基础 - 公有私有 - 继承 - 组合,Mixin- 魔法函数 - 魔法函数概述 - 构造类魔法函数 - 运算类魔法函数 # 1. 面向对象概述(Objec ...
- python面向对象 : 抽象类(接口类),多态,封装(私有制封装)
一. 抽象类(接口类) 与java一样, python也有抽象类的概念但是同样需要借助模块实现,抽象类是一个特殊的类, 它的特殊之处在于只能被继承, 不能被实例化. 从设计角度去看, 如果类是从现实对 ...
- Python面向对象编程、类
一.面向对象编程 面向对象--Object Oriented Programming,简称oop,是一种程序设计思想.在说面向对象之前,先说一下什么是编程范式,编程范式你按照什么方式来去编程,去实现一 ...
- python 面向对象专题(五):私有成员、类方法、静态方法、属性、isinstance/issubclass
https://www.cnblogs.com/liubing8/p/11325421.html 目录 Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/issubc ...
- Python面向对象-概念、类、实例
OOP——Object Oriented Programming,面向对象编程,是一种程序设计思想.该思想将对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 区别于面向过程的程序设计即把计 ...
- python面向对象的多态-类相关内置函数-类内置魔法函数-迭代器协议-上下文管理-04
多态 一种事物具备不同的形态 例如:水 --> 固态.液态.气态 多态:# 多个不同对象可以相应同一个对象,产生不同的结果 首先强调,多态不是一种特殊的语法,而是一种状态,特性(多个不同对象可以 ...
随机推荐
- JFreeChart自我总结
想飞就别怕摔 大爷的并TM骂人 JFreeChart自我总结 1.饼图.柱状图.折线图生成的工具类 1 package com.text.util; 2 3 import java.awt. ...
- CSU 1806 Toll 自适应simpson积分+最短路
分析:根据这个题学了一发自适应simpson积分(原来积分还可以这么求),然后就是套模板了 学习自适应simpson积分:http://blog.csdn.net/greatwall1995/arti ...
- 并不对劲的[noi2006]网络收费
题目略长,就从大视野上复制了. 听上去好像费用流,然而…… ***************************表示略长的题目的分界线************************ 1495: [ ...
- rspec
require 'rails_helper' RSpec.describe Jira, '#set_jira_jlist' do it "this sentence is after it& ...
- bzoj 1637: [Usaco2007 Mar]Balanced Lineup【瞎搞】
我是怎么想出来的-- 把种族为0的都变成-1,按位置x排升序之后,s[i]表示种族前缀和,想要取(l,r)的话就要\( s[r]-s[l-1]==0 s[r]==s[l-1] \),用一个map存每个 ...
- LoadRunner监控Linux配置教程
LoadRunner监控Linux资源时弹出如下错误: Monitor name :UNIX Resources. Cannot initialize the monitoring on 192.16 ...
- python调用chrome ie等浏览器
chrome: 首先,要安装下谷歌浏览器,查看谷歌浏览器的版本,对应版本下载相应的chromedriver插件,http://blog.csdn.net/huilan_same/article/det ...
- Spring.Net学习笔记(5)-集合注入
一.开发环境 系统:Win10 编译器:VS2013 .net版本:.net framework4.5 二.涉及程序集 Spring.Core.dll 1.3.1 Common.Loggin.dll ...
- 一个JavaScript贷款计算器
通过本案例,将会学到: . 如何在文档中查找元素 . 如何通过表单input元素来获取用户的输入数据 . 如何通过文档元素来设置HTML内容 . 如何将数据存储在浏览器中 . 如何使用脚本发起HTTP ...
- STM32的串口DMA收发以及双缓冲区的实现
在使用STM32的UART的DMA功能总结如下: 首先上代码,这里采用STM32 的USART1作为Demo,RX的DMA为DMA1_Channel5,TX的DMA为DMA1_Channel4.初始化 ...