python类属性和实例属性(类变量和实例变量)
在类中,根据变量定义的位置不同,以及定义的方式不同,类属性又可以细分为以下三种类型:
- 类体中,所有函数之外:类属性(类变量)
- 类体中,所有函数内部,以“self.变量名”的方式定义的变量:实例属性(实例变量)
- 类体中,所有函数内部,以“变量名 = 变量值”的方式定义的变量:局部变量
1.类变量
所有类的实例化对象都同时共享类变量。类变量的调用方法有两种,既可以使用类名直接调用,也可以使用类的实例化对象调用(此方法不推荐使用)。
class Person:
name = "xiaobai"
age = 10
def __init__(self, name, age):
self.name = name
self.age = age
#使用类名直接调用
print(Person.name)
print(Person.age)
#通过类名修改类变量的值
Person.name = "lilei"
Person.age = 20
print(Person.name)
print(Person.age)
#执行结果
xiaobai
10
lilei
20
2.实例变量
只作用于调用方法的对象。实例变量只能通过对象名访问,无法通过类名访问。
class Person:
def __init__(self):
self.name = "xiaobai"
self.age = 10
def say(self):
self.content = "i love python"
#name、age以及content都是实例变量。Person类的类对象都会包含name和age实例变量,只有调用了say()方法的类对象才会包含content实例变量。
mary = Person()
print(mary.name)
print(mary.age)
mary.say()
print(mary.content)
#执行结果
xiaobai
10
i love python
实例变量和类变量可以同名,但这种情况下使用类对象无法调用类变量,它会首选实例变量。
class Person:
name = "lilei"
def __init__(self):
self.name = "xiaobai"
self.age = 10
def say(self):
self.content = "i love python"
mary = Person()
print(mary.name)
#执行结果
xiaobai
3.局部变量
局部变量只能用于所在函数中,函数执行完成后,局部变量也会被销毁。
python类属性和实例属性(类变量和实例变量)的更多相关文章
- python类可以任意添加属性
python类可以任意添加属性 class A(object): def __init__(self): self.name = "zhangsan" self.age = 18 ...
- python 类和对象的属性
python类和对象的属性分为类属性和对象属性两大类,类属性属于类,而对象属性属于对象. 1. 父类的对象属性会被子类的对象继承. 2. 父类的类属性会被子类继承,还是作为类属性,如果父类改变了类属性 ...
- python 类中的公有属性 私有属性 实例属性
class parent(): i=1 __j=2 class child(parent): m=3 __n=4 def __init__(self,age,name): self.age=age s ...
- Python类总结-字段,方法,属性区别及StaticMethod, Property,私有字段和私有属性
类包含下列 静态属性 动态属性 静态方法 动态方法 class Province: #静态字段--属于类,调用方法类.字段名 memo = "中国23个省之一" #动态字段--属于 ...
- python的局部变量,全局变量,类变量,实例变量
定义: a.全局变量:在模块内.在所有函数外面.在class外面,这就是全局变量. b.局部变量:在函数内.在class的方法内(未加self修饰的),这就是局部变量. c. 静态变量:在class内 ...
- Python中面向对象的一些关于类变量与实例变量的理解
1. 要写出有意义的面向对象的代码,最核心的:类.对象.三大特性:继承.封装.多态 类变量与实例变量: class Student(): # 类变量 name = '张' age = 0 def __ ...
- Python类和实例方法和属性的动态绑定
python中实例创建后可以给实例绑定任何属性和方法 class Student(object): pass 给实例绑定一个属性: s=Student() s.name='Michel' print ...
- python中函数和方法区别,以及如何给python类动态绑定方法和属性(涉及types.MethodType()和__slots__)
网上有很多同义但不同方式的说法,下面的这个说法比较让你容易理解和接受 与类和实例无绑定关系的function都属于函数(function): 与类和实例有绑定关系的function都属于方法(meth ...
- Python类总结-封装(私有属性,方法)
封装基础 广义上面向对象的封装:代码的保护,面向对象的思想本身就是一种封装 只让自己的对象能调用自己类中的方法 狭义上的封装-面向对象三大特性之一(私有变量,用公有的方法封装私有属性,方法叫封装) 把 ...
- python 类实例化,修改属性值
class User(object): def __init__(self, first_name, last_name, login_attempts): self.first_name = fir ...
随机推荐
- linux并口纵览
因为我们期望大部分读者以所谓的"个人计算机"的形式使用一个 x86 平台, 我们觉得值 得解释一下 PC 并口如何设计的. 并口是在个人计算机上运行数字 I/O 例子代码的外设 接 ...
- js 快速取整
我们要将23.8转化成整数 有哪些方法呢 比如 Math.floor( ) 对数进行向下取整 它返回的是小于或等于函数参数,并且与之最接近的整数 Math.floor(5.1) 返回值 //5 M ...
- Android Simulator Shortcut keys
按钮 快捷键 Back Ctrl+Backspace Battery Ctrl+Shift+B Cellular Ctrl+Shift+C D-pad Ctrl+Shift+D Enter zoom ...
- 小心Powershell的位数
我们都知道64位的 Windows 中有两个Powershell,32位的 Windows Powershell(x86)和64位的 Windows Powershell.(当然,32位的Window ...
- 18.函数复习,文件处理b模式(二进制处理),文件处理其他高级玩法
1.函数复习 # map # l = [1,2,3,4,5] # print(list(map(str,l))) # reduce # l = [1,2,3,4,5] # from functools ...
- Excel读取方式优化(浅谈对规律的认知)
相信大家都接触过对Excel的读取,今天突发奇想,想将自己的一小段经历分享出来.灵活识别列名并将其存到对象数组中. 固定形式的Excel列的读取: 源于我第一次操作Excel,将列名对应成table中 ...
- unity3D 自定义公告牌
前言 有时候我们希望公告牌跟随镜头旋转永远平行面向屏幕,同时跟随镜头缩放缩放大小不变(镜头远离物体,正常物体视觉效果变小,但公告牌视觉大小比例不变),或者跟随镜头缩放变化,本文记录C#脚本的两种实现方 ...
- javascript DOM 编程艺术 札记1
一个重要观点 DOM 是指 文档对象模型,它对应浏览器实际认知的东西.html 文本本身和 html 加载到浏览器中显示的东西并不是完全一致的,后者就是 DOM 节点树,它是浏览器实际认知的东西.一个 ...
- Word List 1 part 1
inter- 在....之间 intermediate adj. 中间的 pro- 向前,在前;很多;赞同;亲... proportion n. 比例;部分 prim- 第一,主要的 prime ad ...
- SpringBoot基础架构篇1(SpringBoot、MyBatis-Plus与Thymeleaf)
show me the code and talk to me,做的出来更要说的明白 我是布尔bl,你的支持是我分享的动力! 1 引入 使用 MyBatis-Plus 以及 thymeleaf 实现增 ...