【python】类属性以及实例属性、实例方法的介绍
1. 类的组成
class Demo():var = 'demo' # 类属性,公有__num = 100 # 类属性,私有def __init__(self,name='muzi',age=18):self.name = name # 实例属性,公有self.__age = age # 实例属性,私有print('demo构造方法,特殊方法,私有')print('内置属性,获取类名:',Demo.__name__) #内置属性,自带def fun1(self):print('fun1实例方法,公有')def __fun2(self):print('fun2实例方法,私有')@classmethoddef class_fun(cls):print('class_fun类方法,装饰器@classmethod')@staticmethoddef static_fun():print('static_fun静态方法,装饰器@staticmethod')@propertydef prop(self):print('prop属性方法,装饰器@property')print('类的所有属性与方法:',Demo.__dict__)
d = Demo()
print('对象的所有属性:',d.__dict__)
print('打印出类名:',Demo.__name__)
2. 类的属性
1-类属性:位置:声明在类中,函数外面的查看属性值:类名.属性名 --推荐对象名.属性名 --很少用修改属性值:类名.属性名 = 新值 --推荐对象名.属性名 = 新值 --很少用总结:对象名.属性名方式修改属性值后,只有此对象访问的属性是修改后的值,其他对象访问时还是原来的值总结:类名.属性名方式修改属性值后,无论某个对象访问的该属性,都是修改后的值
class Demo():var = 'var_demo' # 类属性,公有__num = 100 # 类属性,私有---私有的只能在本类中使用def test(self):print('test')def p_var(self):# Demo.var = '1233'print(Demo.var) #类名.属性名def p_num(self):print(Demo.__num) #类名.属性名'''1.1 查看类属性值:
类名.属性名
'''
# 1-查看公有/私有类属性
#1.1 类外面使用类属性
print(Demo.var)
# print(Demo.__num) #AttributeError: type object 'Demo' has no attribute '__num'# 1.2 类里面使用类属性
d = Demo()
d.p_num()
d.p_var()
总结:私有类属性只能在本类使用,出了本类就不可以用,公有类属性在哪都可以用
1.2 修改类属性值:
类名.属性名 = 新值2-修改公有/私有类属性2.1 类外面修改类属性
Demo.var = 'test_var'
print(Demo.var)# 私有属性,是不可以在类外面去修改
Demo.__num = 500
print(Demo.__num) # 并没有真正修改私有类属性的值,而是Demo.__num当成了一个变量# 判断Demo.__num是否真正的修改
d = Demo()
d.p_num() # 500==成功 100==失败zs = Demo()
ls = Demo()
print(zs.var)
print(ls.var)
总结:类名.属性名方式修改属性后,无论某个对象访问的该属性,都是修改后的值
3. 类的实例属性
位置:声明在类中的构造方法里面的调用属性值:self.属性名 --在类里面用的时候对象名.属性名 --在类外面用的时候修改属性值:self.属性名 = 新值 --在类里面用的时候对象名.属性名 = 新值 --在类外面用的时候
class Demo():var = 'demo' # 类属性,公有__num = 100 # 类属性,私有def __init__(self,mname='muzi',mage=18):self.name = mname # 实例属性,公有self.__age = mage # 实例属性,私有print('demo构造方法,特殊方法,私有')def info(self):self.name = 'test_demo'print('姓名:{},年龄:{}'.format(self.name,self.__age))'''2-1 查看实例属性值
# 对象.属性名
# self.属性名 --本类中使用'''
# 2.1.1 类外面使用实例属性
muzi = Demo()
# print('姓名:{}'.format(muzi.name))
# # print('年龄:{}'.format(muzi.__age)) #AttributeError: 'Demo' object has no attribute '__age'
zs = Demo('zs','18')
# print('姓名:{}'.format(zs.name)) # zs
#
# ls = Demo('ls',20)
# print('姓名:{}'.format(ls.name)) # ls# 2.1.2 类里面使用实例属性
zs.info()
muzi.info()''' 2-2 修改实例属性值
# 对象.属性名 = 新值
# self.属性名 = 新值 --本类中使用'''
# 2.2.1 类外面修改实例属性
muzi = Demo()
muzi.name = 'test_muzi'
muzi.info()zs = Demo('zs',18)
zs.info() #姓名:zs,年龄:18
4. 内置属性
内置属性:python自定义的一些属性,通过调用来获取对应类的相关属性信息。常见的有:[类名].__dict__:打印类的所有属性与方法(包括继承自基类的属性和方法)(包括内置属性和方法)[对象].__dict__:打印对象的所有属性(私有和公有)[类名].__name__: 打印出类名
class Demo():var = 'demo' # 类属性,公有__num = 100 # 类属性,私有def __init__(self,name='muzi',age=18):self.name = name # 实例属性,公有self.__age = age # 实例属性,私有print('demo构造方法,特殊方法,私有')print('内置属性,获取类名:',Demo.__name__) #内置属性,自带def fun1(self):print('fun1实例方法,公有')def __fun2(self):print('fun2实例方法,私有')print(Demo.__dict__)
5. 实例方法
跟普通方法基本一致,默认第一个参数为self,self 代表的是实例对象,且只能被实例对象调用。语法:self.实例方法名() --在类里面用的时候对象名.实例方法名() --在类外面用的时候
# class Demo():
# var = 'var_demo' # 类属性,公有
# __num = 100 # 类属性,私有---私有的只能在本类中使用
#
# def test(self): # 公有实例方法
# # 实例方法的变量
# self.num = 1
# print('test')
#
# def p_getnum(self):
# print(self.num) # 能=1 不能=2
#
# def __p_var(self,num=1):# 私有实例方法
# print(Demo.var,num) #类名.属性名
#
# def p_num(self):
# self.__p_var(111)
# print(Demo.__num) #类名.属性名
#
# # 1.类外面调用实例方法
# d = Demo()
# d.test()
# # d.__p_var() #AttributeError: 'Demo' object has no attribute '__p_var'
#
#
# # 2.类里面调用实例方法
# print(11)
# d.p_num() #var_demo 111 100
# print(222)class Demo():var = 'var_demo' # 类属性,公有__num = 100 # 类属性,私有---私有的只能在本类中使用def test(self): # 公有实例方法# 实例方法的变量self.num = 1print('test')def p_getnum(self):print(self.num)def __p_var(self, num=1): # 私有实例方法print(Demo.var, num) # 类名.属性名def p_num(self):self.__p_var(111)print(Demo.__num) # 类名.属性名
# 3.实例方法中的变量跨方法能否进行调用呢
t = Demo()
t.p_getnum() #AttributeError: 'Demo' object has no attribute 'num'
# 总结:实例方法中定义的变量只能在本实例方法中使用,一旦出了本实例方法,则无法使用,
# 因为实例方法中的变量的作用域只有在本实例中
【python】类属性以及实例属性、实例方法的介绍相关推荐
- Python 类—类属性(私有属性、公有属性、实例属性、局部变量)类方法(实例方法、静态方法)
1. 创建类 类是对某个对象的定义,它包含有关对象动作方式的信息,包括它的名称.方法.属性和事件.类不存在于内存中,因此它本身并不是对象.当程序运行需要引用类的代码时,就会在内存中创建一个类的新实例, ...
- python中的类属性、实例属性、类方法、实例方法
定义类 class Person():pass 创建实例 xiaoming = Person() xiaohong = Person() 实例属性 xiaoming = Person() xiaomi ...
- python的实例属性和静态属性表_Python:类属性,实例属性,私有属性与静态方法,类方法,实例方法...
类属性可以直接在方法中赋值,但 一.调用该属性时,必须先调用该方法: 二.与 init 方法区别是,init方法只初始化一次,初始化完成后作为全局变量.在方法中赋值属性,每次调用该方法,该属性初始化一 ...
- Python OOP:面向对象三大特性(封装、继承、多态)、类属性和实例属性、类方法@classmethod、静态方法@staticmethod、函数和类callable、__call__
一.面向对象三大特性 二.多态 定义:多态是⼀种使⽤对象的⽅式,⼦类重写⽗类⽅法,调⽤不同⼦类对象的相同⽗类⽅法,可以产⽣不同的执⾏结果. 一个父类,可以继承给多个子类,每个不同的子类可以创建多个对象 ...
- python类中的属性分为类属性和实例属性两种_python从入门到大神---1、初始化实例、类属性、方法...
python从入门到大神---1.初始化实例.类属性.方法 一.总结 一句话总结: 方法不加括号是代码段:感觉python方法和js,php很类似,不加括号是代码段,加括号变成方法,比如f,f() 1 ...
- Python之路-面向对象继承和多态类属性和实例属性类方法和静态方法
一.面向对象 编程方式 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发"更快更好更强-& ...
- 关于Python类属性与实例属性的讨论
标题名字有点长. 之所以想写这个文章是因为碰巧看到网上一篇关于Pyhon中类属性及实例属性区别的帖子.因为我之前也被这个问题困扰过,今天碰巧看到了这篇帖子,发现帖子的作者只是描述了现象,然后对原因的解 ...
- python实例属性与类属性_Python中的类属性和实例属性引发的一个坑-续
上篇文章Python 中的类属性和实例属性,我们探讨了类属性和实例属性引发的一个小坑.总结了类属性和实例属性的区别如下:类属性可以被类和实例调用,实例属性只能被实例调用 类属性不会随着实例的调用而改变 ...
- Python类属性和实例属性分别是什么?
实例属性即同一个类的不同实例,其值是互不关联的,也不会互相影响的,定义时使用"self.属性名",调用时也使用"self.属性名". 类属性则是同一个类的所有实 ...
最新文章
- linux 常用命令:
- 数据挖掘公司D square nv 完成500万欧元B轮融资
- Python混淆矩阵可视化:plt.colorbar函数自定义颜色条的数值标签、配置不同情况下颜色条的数值范围以及数据类型(整型、浮点型)
- linux 可运行的最大 线程 进程 数
- C#三层架构第五课之DBUtil层设计
- 截至2020年底Cosmos生态基金会ICF总资金达2.12亿美元 加密资产占82%
- 账户体系、支付服务设计第一版
- 简单的busybox创建_用busybox构建一个最小根文件系统
- 【图像去噪】基于matlab GUI中值+均值+维纳+小波滤波图像去噪【含Matlab源码 800期】
- 机电大作业(第一阶段)
- vmware虚拟机ping不通主机
- MindManager22直装版思维导图新功能
- Deepin+win7双系统启动项问题解决
- PHP微信公众号网页授权登录 扫码登录 获取用户基本信息
- python 发包的方法_有没有快一点的Python扫描发包方法,原来的速度好慢
- 【Spark】介绍 快速入门
- jieba 详细介绍
- 考虑以下c语言代码int,计算机组成习题答案(清华大学出版社)
- 白色简洁大方公司企业网站源码 WordPress主题2款
- SYN6-第六周上机实验-对称的空心数字梯形
热门文章
- tesseract库
- 二叉树层次遍历c语言_每日一道 LeetCode (23):二叉树的层次遍历 II
- cad新手必练300图_零基础学习CAD软件难吗?超全CAD入门学习教程送给你
- c语言找到串口,再次熟悉串口
- Mysql学习总结(56)——MySQL用户管理和权限设置
- Maven学习总结(35)——Maven项目错误 JAX-RS (REST Web Services) 2.0 can not be installed问题
- turtle填充随机颜色同心圆
- Java中Date, Calendar, SimpleDateFormat的相互转换
- 【DL-CV】神经网络的补充
- 学习Java笔记2018.3.31