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】类属性以及实例属性、实例方法的介绍相关推荐

  1. Python 类—类属性(私有属性、公有属性、实例属性、局部变量)类方法(实例方法、静态方法)

    1. 创建类 类是对某个对象的定义,它包含有关对象动作方式的信息,包括它的名称.方法.属性和事件.类不存在于内存中,因此它本身并不是对象.当程序运行需要引用类的代码时,就会在内存中创建一个类的新实例, ...

  2. python中的类属性、实例属性、类方法、实例方法

    定义类 class Person():pass 创建实例 xiaoming = Person() xiaohong = Person() 实例属性 xiaoming = Person() xiaomi ...

  3. python的实例属性和静态属性表_Python:类属性,实例属性,私有属性与静态方法,类方法,实例方法...

    类属性可以直接在方法中赋值,但 一.调用该属性时,必须先调用该方法: 二.与 init 方法区别是,init方法只初始化一次,初始化完成后作为全局变量.在方法中赋值属性,每次调用该方法,该属性初始化一 ...

  4. Python OOP:面向对象三大特性(封装、继承、多态)、类属性和实例属性、类方法@classmethod、静态方法@staticmethod、函数和类callable、__call__

    一.面向对象三大特性 二.多态 定义:多态是⼀种使⽤对象的⽅式,⼦类重写⽗类⽅法,调⽤不同⼦类对象的相同⽗类⽅法,可以产⽣不同的执⾏结果. 一个父类,可以继承给多个子类,每个不同的子类可以创建多个对象 ...

  5. python类中的属性分为类属性和实例属性两种_python从入门到大神---1、初始化实例、类属性、方法...

    python从入门到大神---1.初始化实例.类属性.方法 一.总结 一句话总结: 方法不加括号是代码段:感觉python方法和js,php很类似,不加括号是代码段,加括号变成方法,比如f,f() 1 ...

  6. Python之路-面向对象继承和多态类属性和实例属性类方法和静态方法

    一.面向对象 编程方式 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发"更快更好更强-& ...

  7. 关于Python类属性与实例属性的讨论

    标题名字有点长. 之所以想写这个文章是因为碰巧看到网上一篇关于Pyhon中类属性及实例属性区别的帖子.因为我之前也被这个问题困扰过,今天碰巧看到了这篇帖子,发现帖子的作者只是描述了现象,然后对原因的解 ...

  8. python实例属性与类属性_Python中的类属性和实例属性引发的一个坑-续

    上篇文章Python 中的类属性和实例属性,我们探讨了类属性和实例属性引发的一个小坑.总结了类属性和实例属性的区别如下:类属性可以被类和实例调用,实例属性只能被实例调用 类属性不会随着实例的调用而改变 ...

  9. Python类属性和实例属性分别是什么?

    实例属性即同一个类的不同实例,其值是互不关联的,也不会互相影响的,定义时使用"self.属性名",调用时也使用"self.属性名". 类属性则是同一个类的所有实 ...

最新文章

  1. linux 常用命令:
  2. 数据挖掘公司D square nv 完成500万欧元B轮融资
  3. Python混淆矩阵可视化:plt.colorbar函数自定义颜色条的数值标签、配置不同情况下颜色条的数值范围以及数据类型(整型、浮点型)
  4. linux 可运行的最大 线程 进程 数
  5. C#三层架构第五课之DBUtil层设计
  6. 截至2020年底Cosmos生态基金会ICF总资金达2.12亿美元 加密资产占82%
  7. 账户体系、支付服务设计第一版
  8. 简单的busybox创建_用busybox构建一个最小根文件系统
  9. 【图像去噪】基于matlab GUI中值+均值+维纳+小波滤波图像去噪【含Matlab源码 800期】
  10. 机电大作业(第一阶段)
  11. vmware虚拟机ping不通主机
  12. MindManager22直装版思维导图新功能
  13. Deepin+win7双系统启动项问题解决
  14. PHP微信公众号网页授权登录 扫码登录 获取用户基本信息
  15. python 发包的方法_有没有快一点的Python扫描发包方法,原来的速度好慢
  16. 【Spark】介绍 快速入门
  17. jieba 详细介绍
  18. 考虑以下c语言代码int,计算机组成习题答案(清华大学出版社)
  19. 白色简洁大方公司企业网站源码 WordPress主题2款
  20. SYN6-第六周上机实验-对称的空心数字梯形

热门文章

  1. tesseract库
  2. 二叉树层次遍历c语言_每日一道 LeetCode (23):二叉树的层次遍历 II
  3. cad新手必练300图_零基础学习CAD软件难吗?超全CAD入门学习教程送给你
  4. c语言找到串口,再次熟悉串口
  5. Mysql学习总结(56)——MySQL用户管理和权限设置
  6. Maven学习总结(35)——Maven项目错误 JAX-RS (REST Web Services) 2.0 can not be installed问题
  7. turtle填充随机颜色同心圆
  8. Java中Date, Calendar, SimpleDateFormat的相互转换
  9. 【DL-CV】神经网络的补充
  10. 学习Java笔记2018.3.31