类的构成元素

公共属性:实例化时无需__init__方法绑定到对象,就可以直接使用;

普通属性:实例化时 需要__ini__方法绑定到对象之后,才可以直接使用;

私有属性:__sex 双下滑杠开头,需要在类里定义函数属性(方法),对象调用函数属性间接访问;

特性:使用@property装饰器的方法,特性就是类的特殊属性,特殊之处在于普通属性是变量赋值的形式存在,它是一段代码(函数)返回值,因此可以借助@property把函数属性,模拟成变量属性,统一了调用接口;

特性分类:

1、只读特性@property装饰的函数

2、@diaplay.setter 可修改的特性

3、@diaplay.deleter 可以删除特性

--------------------------------------------------------------------------------------------------------------------------------------

绑定方法:实例调用时,该函数属性的 第一个形参自动传入对象本身;

静态方法:@staticmethod装饰的函数,称之为静态方法,无论对象还是类调用他,都不会把自身当做其第一个参数传入;说白了就是在类里定义了一个普通函数;也可以称为解绑函数,给类使用;

类方法:类方法是给类用的,类在使用时会将类本身当做参数传给类方法的第一个参数,python为我们内置了函数classmethod来把类中的函数定义成类方法;1

类的特殊方法:

0、__init__ (类里定义__init__构造方法,对象实例化时,触发__init__构造方法 初始化属性给对象)

1、__setattr__ (类里定义了__setattr__方法,对象设置属性时,触发该特殊方法执行;)

2、__delattr__(类里定义了__delattr__方法,对象删除属性时,触发该特殊方法执行;)

3、__getattr___ (类里定义了__getattr__方法,对象找不到属性时,触发该特殊方法执行;)

4、__str__(在类里定义__str__特殊方法,print 打印由这个类实例化出来的对象时,就会显示__str__特殊方法return的结果)

5、__setitem__(对象以字典的形式,设置属性时就会触发 ____setitem__特殊方法的运行)

6、__getitem__(对象以字典的形式,获取属性时就会触发__getitem__特殊方法的运行)

7、__delitem__(对象以字典的形式,删除属性时就会触发__delitem__特殊方法的运行)

8、__slots__ (在类里定义__slots__ 特殊方法之后,所有对象实例化时 自己不会再创建名称空间__dict__而且只能使用 __slots__ = ['x','x1','x2']里定义的属性)

9、__iter__和__next__(有__iter__方法的对象可迭代对象,可迭代对象执行__iter__方法变成迭代器;迭代器调用__next__就可以取一个迭代器里值,这样就不依赖索引取值了。)

10、__doc__(定义类的描述信息)

11、__del__(析构方法,当对象在内存中被释放时,自动触发执行。无需Python解释器回收垃圾;)

12、__enter__和__exit__(实现上下文管理协议 with open('a.txt','m') as f)

13、__call__(在类里定义了__call__实例化出来的对象,加上括号()就直接调用了__call__特殊方法里return的结果 )

14、__dict__(对象的属性和属性值)

classBaseReponse:def __init__(self):

self.status=False

self.data=None

self.error=None

self.msg=Nonedefget_dic(self):#返回1个对象的属性信息

return self.__dict__response=BaseReponse()

response.error=1

print(response.get_dic())

__dict__应用

15、__bases__(查看当前类继承的父类)

对象属性

# 对象私有属性(对象不可以直接访问)

# 绑定方法:但凡定义到类里面的方法都是 绑定方法;对象调用绑定方法,会自动把自己作为绑定方法的第一个参数,传进去;

#静态方法:解除绑定关系,本质上就是个函数,类和对象直接调用,不用传自己;所也以对象 不用实例化 也可以使用类里的方法了;

# 对象特性:property通过对象方法模拟出来的property(对象的特性 会 优先于对象属性被访问)

# 对象特性分为

#1.只读特性 2.可修改特性 3、可删除的特性

#classPeople():

# def __init__(self,Name,Sex):

# self.name=Name #self.name是对象实例时,调用__init__方法时,初始化给对象的属性;

# self.__sex=Sex #但凡属性有__(双下划线标识)就意味着着,这是初始化给对象的私有属性,对象不能直接访问;

# def diaplay(self): #如何访问私有属性呢?

#return self.__sex # 1、通过在类里 添加方法,对象通过这个借口访问;

#

# p=People('马腾飞','男')

# print(p.diaplay())

#

#classPeople():

# def __init__(self, Name, Sex):

# self.name=Name

# self.__sex=Sex

# @property #2、通过类类内部的方法访问__sex还需要加括号,于是在此基础上,有了 @property装饰器。

# def diaplay(self): #@property: 通过装饰类的方法,给对象模拟出一个只读属性;就是负责把一个方法变成属性调用的:

#returnself.__sex

# p1=People('黄蓉','男')

# p1.diaplay #这样通过 diaplay方法 模拟出来的diaplay属性 就可以,像访问普通属性一样的方法,访问私有属性了;

# print(p1.__dict__)

#

#

#classPeople():

# def __init__(self, Name, Sex):

# self.name=Name

# self.__sex=Sex

# #@property装饰器虽然解决了,私有属性 、方法的统一访问;模拟出了私有属性访问接口;

# @property # 但该 接口无法 修改,私有属性还是无法修改;

# def diaplay(self):

#returnself.__sex

# @diaplay.setter #于是在此基础上产生了@diaplay.setter 装饰器,可修修改 @property特性

# def diaplay(self,value):

# self.__sex=value #千万注意 @display_setter只是模拟出来的特殊属性,没有存储值得功能;所以要修改他的值一定要修改 他引用的真实值

#return#

# p2=People('黄蓉','男')

# print(p2.diaplay)

# p2.diaplay='male'# print(p2.diaplay)

#

#classPeople():

# def __init__(self, Name, Sex):

# self.name=Name

# self.__sex=Sex

# @property

# def diaplay(self):

#returnself.__sex

# @diaplay.setter

# def diaplay(self,value):

# self.__sex=value

#return# @diaplay.deleter #可删除 property 特性

# def diaplay(self):

# del self.__sex

#

# p3=People('黄蓉','男')

# print(p3.diaplay)

# del p3.diaplay

# print(p3.diaplay)

import time

#classDate:

# def __init__(self,Year,Month,Day):

# self.year=Year

# self.month=Month

# self.day=Day

# @staticmethod #@staticmethod,给类增加了一种新的实例化方式,直接调用类下面的方法,不用__init__

# def now(): #用Data.now的形式去产生对象,该实例用的就是当前的时间

# t=time.localtime()

# obj=(t.tm_year,t.tm_mon,t.tm_mday) #新建实例并且返回

#returnobj

#

# print(Date.now())

#

# d1=Date.now()

# print(id(d1))

python中类的构成_Python类的构成元素相关推荐

  1. python中类的嵌套_python类的嵌套

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 在.net和java语言中看到过嵌套类的实现,作为外部类一个局部工具还是很有用的 ...

  2. python中类的定义_python 类中定义类

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 现有自定义类(color.py)如下,类位于路径'userschuxingpyt ...

  3. python定义一个人类_Python类的定义、继承及类对象使用方法简明教程

    Python编程中类的概念可以比作是某种类型集合的描述,如"人类"可以被看作一个类,然后用人类这个类定义出每个具体的人--你.我.他等作为其对象.类还拥有属性和功能,属性即类本身的 ...

  4. python定义一个人类_Python类和人类

    Python中的类 俗话说,物以类聚,人以群分,类是什么,类就是一组相同属性的集合.下面来结合人,探讨Python中类和人类的关系. 首先,我们定义一个人的类,如下: class People(obj ...

  5. python中类怎么理解_Python中的列表理解

    python中类怎么理解 In order to create a list, a most obvious and remembered solution is to use a for-loop. ...

  6. python中类的用法_Python中的类和方法使用举例

    成员变量 对象的创建 创建对象的过程称之为实例化,当一个对象被创建后,包含三个方面的特性对象聚丙属性和方法, 句柄用于区分不同的对象, 对象的属性和方法,与类中的成员变量和成员函数对应, obj = ...

  7. python中类的嵌套_python中的嵌套类 | 学步园

    在.NET和JAVA语言中看到过嵌套类的实现,作为外部类一个局部工具还是很有用的,今天在python也看到了很不错支持一下.动态语言中很好的嵌套类的实现,应该说嵌套类解决设计问题同时简化了程序,值得学 ...

  8. python中类和对象_Python里的类和对象简介

    ---恢复内容开始--- Python里的类 对象=属性+方法: 对象的属性主要是指主要的特征和参量,而方法主要是指函数: 类是一个具有一定特征和方法的集合,而对象是类的一个:类和对象的关系就如同模具 ...

  9. python中类的使用_Python第九课-使用 类(class)创造新的数据类型!

    前言 之前几课里边我们接触到了很多内置数据类型,字符串.列表.字典等等. 难道一个编程语言里只能使用定义好的数据类型吗?如果他们并不非常适合现有数据的表达呢?我们可以创造一个新的数据类型来使用吗? 当 ...

最新文章

  1. 进程状态控制-进程的阻塞和唤醒
  2. 影像组学视频学习笔记(37)-机器学习模型判断脑卒中发病时间(文献报告)、Li‘s have a solution and plan.
  3. mysql 学习 博客_mysql学习
  4. 开课吧python课程-明星为开课吧直播带货:人人都要学,人人都可以学的Python
  5. FireBug的控制台管理
  6. Android提醒微技巧,你真的了解Dialog、Toast和Snackbar吗?
  7. 服务器内存傲腾基本参数信息,服务器加傲腾内存
  8. location 拦截所有_让它帮你干掉所有流氓软件,还你一个清静系统
  9. DDD中的聚合和UML中的聚合以及组合的关系
  10. Knative 实战:基于阿里云 Kafka 实现消息推送
  11. JSTL中的Core标签库
  12. 使用 .NET HttpClient 下载 PDF 文件的DEMO
  13. 计算机网络协议各协议的作用,计算机网络通信协议有哪些?作用是什么?
  14. 渗透之——Nmap+Zenmap+Amap+Zmap
  15. 台式计算机网卡型号怎么查找,怎么确定台式机无线网卡驱动版本 台式机无线网卡驱动版本查看方法...
  16. GitLab CI/CD Pipeline 与 jobs的概念
  17. java定义静态常量_如何在Java中定义常量
  18. 纯HTML+CSS+js实现大型企业站小米商城官网之注册页面
  19. 蚂蚁金服Java面试题、笔试题(含答案)-中级
  20. volatility内存取证分析与讲解(持续更新)

热门文章

  1. oracle 事务快照_了解事务和快照复制的分布规模
  2. Django ORM QuerySet集合对象的特性
  3. spring boot整合cxf发布和调用webservice
  4. js 父子标签同时设置onclick,字标签触发父标签onclick解决办法
  5. cocos2d-x 执行在 genymotion上面
  6. 浮动div中的图片垂直居中
  7. python3-字典中存储列表
  8. 产生java的动态库文件so的配置步骤
  9. Prototype(原型模式)
  10. SharePoint对象模型性能考量