A、成员:
1.字段:静态字段(每个对象都有同一字段),普通字典(每个对象都有不同的数据)
2.方法:静态方法(无需使用对象的内容),类方法,普通方法(使用对象中的数据)
3.特性:普通特性(将方法伪造成字段)
   通过类去访问的有:静态字段,静态方法,类方法
   通过对象去访问的有:普通字段,类的方法
   自己的成员自己去访问
   静态方法:没有self,前添加@staticmethod,即为静态方法(通过类去访问)
   类方法:比静态方法多一个参数,该参数是为了显示哪个类,前添加@classmethod
   特性:将方法未造成字段来执行,前添加@property 快速判断,类执行,对象执行
self 对象调用
无self 类调用
test01
class Provice:

    #静态字段,类中
country="China" def __init__(self,name): #普通字段,对象中
self.name=name #普通方法,类中
def show(self):
print("show") #静态方法
@staticmethod
def add():
print("加法") #类方法,多一个参数
@classmethod
def dev(cls):
print("减法",cls) #特性,将方法未造成字段来执行
@property
def csv(self):
print("csv") #设置csv中的值,3个csv处名字必须相同
@csv.setter
def csv(self,value):
print(value)
pro=Provice("山东")
print(Provice.country)
print(pro.name)
Provice.add()
print(Provice.dev())
print(pro.csv)
pro.csv="123456"
-------------------------------------------------

  China
  山东
  加法
  减法 <class '__main__.Provice'>
  csv
  123456

B、利用反射导入模块、查找类、创建对象、查找对象中的字
imp=__import__("test01",fromlist=True)
print(imp) class_name=getattr(imp,"Foo")
print(class_name) r=class_name('zhangyu')
print(r)
print(getattr(r,'name'))
----------------------------------------

  <module 'test01' from 'F:\\myworkspacedirectory\\Function\\member\\test01.py'>
  <class 'test01.Provice'>
  <test01.Provice object at 0x00000247FEFC79E8>
  zhangyu

C、成员修饰符
成员:
字段:静态字段(每个对象都有同一字段),普通字典(每个对象都有不同的数据)
方法:静态方法(无需使用对象的内容),类方法,普通方法(使用对象中的数据)
特性:普通特性(将方法伪造成字段)
两种:共有的,私有的(两个下划线开头,只有自己能使用,派生类也不能访问)
class Provice:

    #静态字段,类中
country="China" #私有字段,供内部使用
__country = "Eglish" def __init__(self,name,name1): #普通字段,对象中
self.name=name
#私有的有普通字段
self.__name1=name1 def __add(self):
print("__add") @staticmethod
def __dev():
print("__dev") # 普通方法,类中
def show(self):
print("show")
print(Provice.__country)
self.__name1="666"
self.__add()
self.__dev() @staticmethod
def mm():
Provice.__dev
Provice.__name1 = "6661" obj=Provice("zhangyu","nnn")
print(Provice.country) #错误情况
#print(Provice.__country)
obj.show()
Provice.mm()
---------------------------------------------

  China
  show
  Eglish
  __add
  __dev

D、类的特殊成员1
__init__
__del__
__call__===>Django
xxx.__dict__:可查看类中的成员
class Foo:
'''
我是类的注释
'''
country="zhongguo" def __init__(self):
self.name="666" def __call__(self, *args, **kwargs):
print("call")
return 1 def __getitem__(self, item):
print(item,type(item),"__getitem__") def __setitem__(self, key, value):
print(key,value,"__setitem__") def __delitem__(self, key):
print(key,"__delitem__") def add(self):
print("1") # r=Foo()()
# print(r) r=Foo() #------------->执行init
r() #------------------>执行__call__
r['k1'] #------------------>执行__getitem__
r['k2']='666' #------------------>执行__setitem__
del r['xxx'] #------------------>执行__执行__delitem__
r[1:5:2] #2.7执行getslice 3.0执行getitem
r[1:3:3]=[11,22,33,44,55,66] #2.7执行setslice 3.0执行setitem
del r[1:3:3] #2.7执行detslice 3.0执行detitem print(r.__dict__)
print(Foo.__dict__)
----------------------------------------------

  call
  k1 <class 'str'> __getitem__
  k2 666 __setitem__
  xxx __delitem__
  slice(1, 5, 2) <class 'slice'> __getitem__
  slice(1, 3, 3) [11, 22, 33, 44, 55, 66] __setitem__
  slice(1, 3, 3) __delitem__
  {'name': '666'}

{'__module__': '__main__', '__doc__': '\n 我是类的注释\n ', 'country': 'zhongguo', '__init__': <function Foo.__init__ at 0x000001C307CB8950>, '__call__': <function Foo.__call__ at 0x000001C307CB89D8>, '__getitem__': <function Foo.__getitem__ at 0x000001C307CB8A60>, '__setitem__': <function Foo.__setitem__ at 0x000001C307CB8AE8>, '__delitem__': <function Foo.__delitem__ at 0x000001C307CB8B70>, 'add': <function Foo.add at 0x000001C307CB8BF8>, '__dict__': <attribute '__dict__' of 'Foo' objects>, '__weakref__': <attribute '__weakref__' of 'Foo' objects>}

E、iter:类的特殊成员2
class Foo:

    def __iter__(self):
yield 1
yield 2
yield 3
yield 4 obj=Foo()
#如果执行for对象时,自动会执行对象的iter方法,生成器
for i in obj:
print(i)
----------------------------------------------------
1
2
3
4


四十一、python面向对象二的更多相关文章

  1. python面向对象(二)——类成员

    Python面向对象    类成员 1.字段         普通字段    属于对象         静态字段    属于类   2.方法 普通方法   触发者是对象    括号里至少一个参数 se ...

  2. 第三十四篇 Python面向对象之 反射(自省)

    什么是反射? 反射的概念是由Smith在1982年提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语 ...

  3. python 面向对象二 类和实例

    一.类和实例 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法, ...

  4. python面向对象二

    1.1类的静态属性,类方法,类的静态方法 1.1.1静态属性(@property) 在类中: python内置的@property装饰器就是负责把一个方法(函数)变成属性来调用. class Stud ...

  5. Java从零开始学四十一(反射简述二)

    一.实例化Class类对象 实例化Class类对象的方法有三种: 第一种:通过forName()方法 第二种:类.class 第三种:对象.getClass() 二.Class类的常用方法 No. 方 ...

  6. Python 面向对象(二) 特殊方法

    一些Python特殊方法的汇总 __bases__    类的基类,返回元祖__base__  类的基类,也叫父类__call__ '类名()',类名加括号调用时执行的语句__class__ 对象或类 ...

  7. 四十一 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)基本的索引和文档CRUD操作、增、删、改、查

    elasticsearch(搜索引擎)基本的索引和文档CRUD操作 也就是基本的索引和文档.增.删.改.查.操作 注意:以下操作都是在kibana里操作的 elasticsearch(搜索引擎)都是基 ...

  8. python面向对象(二)

    属性查找 类有两种属性:数据属性和函数属性 1. 类的数据属性是所有对象共享的 2. 类的函数属性是绑定给对象用的 class BeijingStudent:   school='Beijing'  ...

  9. python 面向对象(二)--访问限制

    在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑. 但是,从前面Student类的定义来看,外部代码还是可以自由地修改一个实例的na ...

随机推荐

  1. linux环境查看版本信息

    1.uname -a 2.cat /proc/version 3.cat /etc/issue 4.cat /proc/cpuinfo (查看cpu相关信息)

  2. JavaSE基础:泛型

    泛型 1.引入 情景模式描述,假设完成一个学生的成绩的情况: 整数: math=80,english=70 小数: math=85.6,englisth=77.8 字符串: math="66 ...

  3. 动态class,style,src绑定写法 vue

    :class="{active:menuName===item.title}" :style="thisTitle==='一张图展示'?styles:''" : ...

  4. 使用 dataset 管理数据(官网)

    ECharts 4 开始支持了 dataset 组件用于单独的数据集声明,从而数据可以单独管理,被多个组件复用,并且可以基于数据指定数据到视觉的映射.这在不少场景下能带来使用上的方便. ECharts ...

  5. docker 开启特权模式

    可以在创建容器时通过 --privileged=true 开启特权模式. 创建容器: # docker run -d --name centos7 --privileged=true centos7: ...

  6. hier - 文件系统描述

    DESCRIPTION 描述 一个典型的Linux系统具有以下几个目录: / 根目录,是所有目录树开始的地方. /bin 此目录下包括了单用户方式及系统启动或修复所用到的所有执行程序. /boot 包 ...

  7. 绕过CDN找到真实IP

    现在很多大型企业都会使用CDN内容分发网络,因为CDN存在多个缓存服务点,而且会根据用户IP地址,将用户请求导向到最近的服务点上进行相应,所以得不到主服务站点的ip地址,总结学习一下绕过CDN找到真实 ...

  8. 校内题目T2691 桶哥的问题——送桶

    这是一道校内题目,但迷路的蒟蒻们同样被欢迎来此学习QWQ 题目描述: 题目背景 @桶哥本校——皎月pks大佬OrzOrz 买完了桶,桶哥要去送桶. 题目描述 桶哥买了nn个桶, 他要将这些桶送去nn个 ...

  9. 区块链共识算法|RAFT和PBFT的区别

    这里有个很形象的比喻: 一个团队一定会有一个老大和普通成员.对于 raft 算法,共识过程就是:只要老大还没挂,老大说什么,我们(团队普通成员)就做什么,坚决执行.那什么时候重新老大呢?只有当老大挂了 ...

  10. dns服务的基本配置

    本文环境:CentOS 7 简介 DNS(Domain Name System)即域名服务系统,是Internet上用的最频繁的服务之一,它的本质是一个范围很广的分布式数据库,组织成域层次结构的计算机 ...