python基础-类的属性(类属性,实例属性,私有属性)
一:类的属性
类的属性分为:类属性(公有属性),实例属性和私有属性。
1)类属性(公有属性(静态字段):
类定义时直接指定的属性(不是在__init__方法中),可以通过类名直接访问属性,并且保存在类的内存中,如果一个属性都有共同值就可以设置为公有属性。
2)实例属性:
在__init__方法中添加的属性,就是实例属性。实例属性保存在对象的内存中。
3)私有属性:
在__init__方法中定义,并且前面有两个__的属性:比如self.__heart="Normal" 这个就是私有属性,对外不可见,对内可见。
1.如果想外面看见私有属性,可以通过下面方法:
外面可以看见私有属性,但不能修改
def get_heart(self): #对外提供可读属性
return self.__heart
2.可以强制访问类的私有属性。方式:实例名._类名__私有属性 例:r1._role__heart
4)示例代码1:
- # -*- coding:utf-8 -*-
- __author__ = 'shisanjun'
- class Person(object):
- country="中国"#类的公有属性或者类属性
- def __init__(self,name,age):
- self.name=name #实例属性
- self.age=age
- self.__salary="" #私有属性
- def talk(self):
- print("国家:%s,名称为:%s,年龄为:%s,薪水:%s" %(self.country,self.name,self.age,self.__salary))
- #提供私有属性访问接口
- def get_salary(self):
- return self.__salary
- p=Person("shi",23)
- p.talk()
- #访问类属性
- print(Person.country)
- #实例属性
- print(p.name)
- #直接访问类的私有属性会报错
- #print(p.__salary)
- #强制访问私有属性
- print(p._Person__salary)
- #私有属性访问2:
- print(p.get_salary())
- """
- 结果
- 国家:中国,名称为:shi,年龄为:23,薪水:15000
- 中国
- shi
- 15000
- 15000
- """
示例代码2:
- class Foo(object):
- country="中国“
- def __init__(self,name,count)
- self.name=name
- self.count=count
- def bar(self):
- pass
- obj1=Foo("江苏")
- obj1.bar()
- obj2=Foo(“山东”)
- obj2.bar
- 如果country="中国"放置在__init__中,每次实例化对象的时候country="中国“都会在内存中占用一块。而放在公有属性只占用一块。
- 解释器从上到下解释,先发现类,在内存中创建这个类,这个内存就存在这个方法。
- obj1,obj2维护着和类的指针
- 执行obj1把自己传输进来
- 公有属性(静态字段),只保存类中一份。如果一个属性都有共同值就可以设置为公有属性。
- 私有属性,是保存在对象中,可以是多份
5)内存演示1
5)公有属性内存演示2
python基础-类的属性(类属性,实例属性,私有属性)的更多相关文章
- python基础教程:定义类创建实例
类的定义 在Python中,类通过class关键字定义,类名以大写字母开头 >>>class Person(object): #所有的类都是从object类继承 pass #pass ...
- Python基础(10)——类进阶(静态方法、类方法、属性方法)
以下方法为高级方法,一般来说没什么卵用 1.静态方法 @staticmethod 相当于把类内的函数从类内独立出来,只是名义上归类管,实际上不可以调用类内的变量和函数 通过@staticmethod装 ...
- python基础(三)——类的研究
class Employee: //定义类 以冒号结束 '所有员工的基类' //帮助信息 empCount = 0 def __init__(self, name, salary): //调用时初始化 ...
- python基础教程总结6——类
1. 如何定义一个类 在进行python面向对象编程之前,先来了解几个术语:类,类对象,实例对象,属性,函数和方法. 类是对现实世界中一些事物的封装,定义一个类可以采用下面的方式来定义: class ...
- Python基础(9)——类
类的语法 类的定义 class Dog(object): print("hello,I am a dog!") d = Dog() #实例化这个类, #此时的d就是类Dog的实例化 ...
- Python基础6--函数、类和文件操作
1 def name(para) def myabs(x): if x>0: return x else: return -x 2 lambda表达式 用于声明匿名函数,既没有名字的小函数 f ...
- js中如何判断属性是对象实例中的属性还是原型中的属性
ECMAScript5中的hasOwnProperty()方法,用于判断只在属性存在与对象实例中的时候,返回true,in操作符只要通过对象能访问到属性就返回true. 因此只要in操作符返回true ...
- CSS中不为人知Zoom属性的使用介绍(IE私有属性)
其实Zoom属性是IE浏览器的专有属性,Firefox等浏览器不支持.它可以设置或检索对象的缩放比例.除此之外,它还有其他一些小作用,比如触发ie的hasLayout属性,清除浮动.清除margin的 ...
- Zoom属性的使用介绍(IE私有属性)
其实Zoom属性是IE浏览器的专有属性,Firefox等浏览器不支持.它可以设置或检索对象的缩放比例.除此之外,它还有其他一些小作用,比如触发ie的hasLayout属性,清除浮动.清除margi ...
- Python基础(九) type元类
python元类:type() 元类是python高阶语法. 合理的使用可以减少大量重复性的代码. 元类实际上做了以下三方面的工作: 干涉创建类的过程 修改类 返回修改之后的类 为什么使用元类? ...
随机推荐
- 【bzoj1194】 HNOI2006—潘多拉的盒子
http://www.lydsy.com/JudgeOnline/problem.php?id=1194 (题目链接) 题意 给出S个自动机,如果一个自动机u的所有状态是另一个自动机v的状态的子集,那 ...
- MacBook设置终端颜色,补全忽略大小写,设置命令别名alias,设置vim,设置显示git分支
1.启用终端颜色 修改配置文件 $ vim .bash_profile #enables colorin the terminal bash shell export export CLICOLOR= ...
- 微软工程师主讲的SqlServer2005视频教程
http://www.cnblogs.com/slcfhr/archive/2008/11/24/1340283.html SQL Server 2005盛宴系列之一:SQL Server 2005产 ...
- 在Struts2的Action中获得request response session几种方法
转载自~ 在Struts2中,从Action中取得request,session的对象进行应用是开发中的必需步骤,那么如何从Action中取得这些对象呢?Struts2为我们提供了四种方式.分别为se ...
- Java基础-MySQL数据库扫盲篇
Java基础-MySQL数据库扫盲篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据库概述 1>.什么是数据库 数据库就是存储数据的仓库,其本质是一个文件系统,数据按 ...
- IOS取消performSelector警告
#pragma clang diagnostic push #pragma clang diagnostic ignored "-Warc-performSelector-leaks&quo ...
- 数据结构编程实验——chapter9-应用二叉树的基本概念编程
二叉树是树结构中的重要概念,一些特殊的二叉树如满二叉树和完全二叉树由于节点序号的特殊关系,在一些算法中十分常见. 这篇文章将从三个方面介绍有关二叉树的知识点: (1) 普通有序树转化为二叉树. ( ...
- HTML面试基础问题
1.Doctype作用?严格模式与混杂模式如何区分?它们有何意义? 1)<!DICTYPE>声明位于文档中的最前面,处于<html>标签之前,告诉浏览器的解析器,用什么文档 ...
- Linux命令-xargs
比如一个例子 echo "README.md" |cat echo "README.md" |xargs cat 第一个例子只是输出了README.md的文件名 ...
- 谈谈动态地加载Jquery库文件的方法
有时候,我们可能不会在网页中<script src="jquery.min.js" 来加载 Jquery 库,可能在用户点击某个按钮后,才去加载 Jquery 库. 好处不用 ...