实例
实例就是由对象创建出来的实实在在的存在
创建出来的对象叫做类的实例
创建对象的动作叫做实例化
对象的属性叫做实例的属性
对象调用的方法叫做实例方法
 
类是一个特殊的对象
 
类属性
类属性就是类对象中定义的属性,通常用来记录与这个类相关的特征,不会记录与对象相关的特征
演练需求:
1.定义一个工具类
2.每件工具都有自己的名称
3.知道使用这个类,创建了多少工具对象
class Tool ( object ):
# 使用赋值语句定义类属性
count = 0 def __init__(self, name):
self.name = name
# 调用类属性的值+1
Tool.count += 1 # 类属性的调用方式:类名.类属性名
# 创建工具对象
t1 = Tool ( "斧头" )
t2 = Tool ( "水桶" )
# 输出工具对象的总数
print ( "工具对象的总数 %d" % Tool.count )
属性获取机制--向上查找机制
1、首先先在对象内部查找
2、没有找到就会向上寻找类属性
 
类方法
类属性是针对 类对象 定义的属性
使用赋值语句在class 关键字下方可以定义属性
类属性 用于记录与这个类相关的特征
 
类方法 是针对 类对象 定义的方法
在类方法内部可以直接访问类属性或者调用其它的类方法
 
语法格式:
@classmethod
def 类方法名( cls ):
pass
注意:
1.类方法需要用 修饰器 @classmethod 来标识,告诉解释器这是一个类方法
2.类方法的第一个参数 应该是 cls ,与实例方法的第一个参数self类似
3.通过类名,调用类方法,调用方法时,不需要传递cls 参数
4.在方法内部:
  • 可以通过cls. 访问类的属性
  • 也可以通过cls. 调用其他的类方法
class Tool(object):
count = 0 def __init__(self, name):
self.name = name
Tool.count += 1 # 类方法
@classmethod
def show_tool_count(cls):
# 访问当前类方法的属性使用cls.
print("工具对象的数量 %d" % cls.count) tool1 = Tool("斧头")
tool2 = Tool("榔头")
# 调用类方法,使用类名.类方法名()
Tool.show_tool_count()
 
静态方法
静态方法 需要用 @staticmethod 来标识,告诉解释器这是一个静态方法
参数随意,没有“self”和“cls”参数,但是方法体中不能使用类或实例的任何属性和方法
静态方法主要是用来存放逻辑性的代码
通过类名. 调用静态方法
语法格式:
@staticmethod
def 静态方法名():
pass

  

演练:
class Dog(object):
@staticmethod
def run():
# 如果这个方法不访问实例属性或者类属性,就可以把方法定义成静态
print("小狗要跑。。。")
# 通过类名.调用静态方法,不需要创建对象
Dog.run()

  

 
 

python类属性 静态方法的更多相关文章

  1. python类属性和类方法(类的结构、实例属性、静态方法)

    类属性和类方法 目标 类的结构 类属性和实例属性 类方法和静态方法 01. 类的结构 1.1 术语 —— 实例 使用面相对象开发,第 1 步 是设计 类 使用 类名() 创建对象,创建对象 的动作有两 ...

  2. Python类属性和类方法

    01. 类的结构 1.1 术语 —— 实例 使用面相对象开发,第 1 步 是设计 类 使用 类名() 创建对象,创建对象 的动作有两步: 1) 在内存中为对象 分配空间 2) 调用初始化方法 __in ...

  3. python 类属性与方法

    Python 类属性与方法 标签(空格分隔): Python Python的访问限制 Python支持面向对象,其对属性的权限控制通过属性名来实现,如果一个属性有双下划线开头(__),该属性就无法被外 ...

  4. Python类属性访问的魔法方法

    Python类属性访问的魔法方法: 1. __getattr__(self, name)- 定义当用户试图获取一个不存在的属性时的行为 2. __getattribute__(self, name)- ...

  5. python 类属性、静态方法与类方法

    1. 类属性 1.1 定义 在类中方法外通过属性名 = 属性值定义的属性 访问方式: 类名.属性名 对象名.属性名 class Student: cls_id = 102 stu = Student( ...

  6. python类属性和对象属性、类的普通方法和静态方法

    类属性和对象属性的定义 class LearnClass(): #类属性 cls_attr = None def __init__(self,arg): #对象属性 self.obj_attr = a ...

  7. python类的静态方法和类方法区别

    先看语法,python 类语法中有三种方法,实例方法,静态方法,类方法. # coding:utf-8 class Foo(object): """类三种方法语法形式&q ...

  8. Python类属性,实例属性

    1.Python类数据属性:定义在类里面但在函数外面的变量,它们都是静态的. #一段很简单的代码,但反应了很多 >>> class A(): a=1 #一个类里面有个属性a > ...

  9. Python类属性详解

    在python开发中,我们常常用到python的类,今天就通过实例和大家扒一扒类的属性,一起来看看吧. 类属性 1.类定义后就存在,而且不需要实例化 2.类属性使得相同类的不同实例共同持有相同变量 类 ...

随机推荐

  1. 牛客集训 湖南省赛E题 Grid 动态开点线段树

    国庆牛客集训的题,正好准备好好训练线段树,想起来就补一下. 题意很简单,两种操作行合并或者列合并,每个操作后计算有多少个子块. 这题应该先推导公式,行操作或者列操作只有一种的时候,很简单,总数就是n* ...

  2. [小技巧]你真的了解C#中的Math.Round么?

    今天在某.NET Core 群中看到有人在问Math.Round的问题.其实这个问题之前有很多人遇到了,在此总结一下. 开发者为了实现小数点后 2 位的四舍五入,编写了如下代码, var num = ...

  3. Java描述设计模式(14):解释器模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.解释器模式 1.基础概念 解释器模式是对象的行为模式.给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器.客户端 ...

  4. PlayJava Day029

    1.Java Reflection:Reflection(反射)是被视为动态语言的关键 反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息 并能直接操作任意对象的内部属性及 ...

  5. Linux(一)

    1.简单命令        1.1 ls指令         语法1:#ls  [路径]               表示列出指定路径下的文件夹和文件的名字,如果路径没有指定则列出当前路径下的(lis ...

  6. 3.Python常用逻辑运算符

    #header { /* Initially hidden to prevent FLOUC */ display: none; background-color: #fff; /* Display ...

  7. 剑指offer笔记面试题3----数组中重复的数字

    题目一:找出数组中重复的数字.在一个长度为n的数组里的所有数字都在0~n-1的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一个重复的数字.例如 ...

  8. JavaScript for 、for...of 、for...in 等 iteration 效率测试

    由于不同浏览器,不同版本性能不一,且控制台本质是是套用了一大堆eval,沙盒化程度高,所以需使用node环境测试来提高准确性 // 准备待测数组 const NUM = 1e7; let arr = ...

  9. LeetCode刷题191122

    博主渣渣一枚,刷刷leetcode给自己瞅瞅,大神们由更好方法还望不吝赐教.题目及解法来自于力扣(LeetCode),传送门. 算法: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. ...

  10. C#&.Net干货分享- 构建Spire-Office相关Helper操作Word、Excel、PDF等

    先下载好如下的组件: 直接使用完整源码分享: namespace Frame.Office{    /// <summary>    /// Spire_WordHelper    /// ...