1、类的私有成员

私有: 只能自己拥有

以 __ 开头就是私有内容

对于每一个类的成员而言都有两种形式:

- 公有成员,在任何地方都能访问

- 私有成员,只有在类的内部才能使用

私有成员和公有成员的访问限制不同:

静态字段(静态属性)

- 公有静态字段:类可以访问;类内部可以访问;派生类中可以访问

- 私有静态字段:仅类内部可以访问;

class Human:

live = "有思想" # 类公有的属性

__desires = "有欲望" # (程序级别)类私有的属性

_desires = "有欲望" # (程序员之间约定俗成)类私有的属性

def __init__(self,name,age,sex,hobby):

self.name = name

self.age = age

self.sex = sex # 对象的公有属性

self.__hobby = hobby # 对象的私有属性

def func(self):

# 类内部可以查看对象的私有属性

print(self.__hobby)

def foo(self): # 公有方法

# 类内部可以查看类的私有属性

print(self.__desires)

def __abc(self): # 私有方法

print("is abc")

class B(Human):

pass

def run(self):

print(self.__desires)

self._Human__abc() # 强制继承(非常不推荐使用)

b = B("天魔",28,"男","女孩子")

print(b.__desires)

b.run()

b._Human__abc() # _类名私有的属性和方法

# 子类不能继承父类中私有的方法和属性

# 类的外部查看

print(Human.live)

print(Human._desires)

# 保证数据的安全性

Human.live = "无脑"

print(Human.live)

​为什么可以通过.类__私有成员名访问呢?因为类在创建时,如果遇到了私有成员(包括私有静态字段,私有普通字段,私有方法)它会将其保存在内存时自动在前面加上类名.

2、类的其他成员

(1)类方法:

class A:

def func(self): #实例方法

print("is A func")

a = A() # 实例化 一个对象(实例)

A.func() # 添加参数

a.func()

class A:

def func(self): #实例方法

print("is A func")

import time

class Times:

t = time.time() # 类属性

@classmethod

def func(cls):

print(cls) # 类的地址

print("is A func")

object = cls() # 使用类方法可以获取到类地址进行实例化

cls.t = 1010101

a = A()

a.func()

Times.func()

print(Times.t)

class Human:

count = 0

def __init__(self, name, age):

self.name = name

self.age = age

@classmethod

def add_count(cls):

cls.count += 1 # 可以通过类名修改类属性

@classmethod

def get(cls):

return cls.count

Human("天魔",56)

Human("天魔",56)

Human("天魔",56)

Human("天魔",56)

Human("天魔",56)

Human("天魔",56)

Human("天魔",56)

print(Human.get()) # 输出实例化的次数

<1> 类方法的作用:

类方法可以自动变换类名(最大的作用)

1> 使用类方法可以获取到类地址进行实例化

2> 可以通过类名修改类属性

类方法偶然会使用,使用最多的还是实例化方法

(2)静态方法(使用更少)

class A:

def func(self): # 实例方法

print("is A func")

@classmethod

def cls_func(cls): # 类方法

print("is A cls_func")

@staticmethod

def static_func(): # 静态方法

print("他就是普通的函数了")

def static_func():

print("他就是普通的函数了")

A.static_func()

a = A()

a.static_func()

<1> 静态方法不依赖于对象和类(静态方法就是一个普通的函数)

2、属性 :组合(伪装)

class A:

live = "有思想"

def func(self):

print("is A func")

A.live

A.func()

class A:

@property

def func(self):

print("is A func")

a = A()

a.func

class Bmi:

live = "有思想"

def __init__(self, height, weight):

self.height = height

self.weight = weight

@property

def bmi(self):

return self.weight / self.height ** 2

@bmi.setter # 设置属性时执行

def bmi(self,value):

print(value)

print("设置属性时执行我")

@bmi.getter # 查看属性时执行

def bmi(self):

print("查看属性时执行我")

@bmi.deleter # 删除属性时执行

def bmi(self):

print("删除属性时执行我")

rimo = Bmi(1.8,100)

print(rimo.live) # 真属性

rimo.live = "无脑"

del Bmi.live

print(rimo.live)

print(rimo.bmi)

print(Bmi.__dict__)

rimo.bmi = 20 # 伪装成属性进行设置

print(rimo.bmi) # 伪装成属性

del rimo.bmi

class Foo:

def get_AAA(self):

print('get的时候运行我啊')

def set_AAA(self,value):

print('set的时候运行我啊')

def delete_AAA(self):

print('delete的时候运行我啊')

AAA = property(get_AAA,set_AAA,delete_AAA) #内置property三个参数与get,set,delete一一对应

f1=Foo()

f1.AAA

f1.AAA = 'aaa'

del f1.AAA

3、元类

(1)type 查看数据类型(能够查看出当前内容从属于那个类)

print(type("alex"))

print(type([1,2,3,4]))

print(type((1,2,3,40)))

class A:

pass

a = A()

print(type(a))

print(type(A))

print(type(str))

print(type(list))

print(type(tuple))

print(type(object))

python自带的str、list、tuple也是某一个类的对象(python中一切皆对象)

(2)isinstance 判断参数1是不是参数2的对象

print(isinstance([1,2,3],list))

print(isinstance(str,type))

print(isinstance(list,type))

print(isinstance(object,type))

(3)issubclass 判断参数1是不是参数2的子类

class A:

pass

class B(A):

pass

print(issubclass(B,A))

4、元类 -- 构建类

(1)object 与 type的关系

<1> object是type的对象

<2> 新式类都默认继承object

print(issubclass(type,object)) # type是object的子类

print(isinstance(object,type)) # object是type的对象

python类中数据成员_Python 入门 之 类成员相关推荐

  1. python面向对象类的成员_Python面向对象中类的成员

    Python面向对象中类的成员总共有三种,分别是字段.方法和属性 Python Version: 3.5+ 字段 普通字段1 2 3 4 5 6 7 8class A: def __init__(se ...

  2. python类装饰器详解-Python类中的装饰器在当前类中的声明与调用详解

    我的Python环境:3.7 在Python类里声明一个装饰器,并在这个类里调用这个装饰器. 代码如下: class Test(): xx = False def __init__(self): pa ...

  3. python中数据读写_【循序渐进学Python——文件中数据的读写以及操作】

    [循序渐进学Python--文件中数据的读写以及操作] [循序渐进学Python--文件中数据的读写以及操作] [循序渐进学Python--文件中数据的读写以及操作] 相信大家都想过自己有一天,可以用 ...

  4. Python数据分析中数据预处理:编码将文字型数据转换为数值型

    [小白从小学Python.C.Java] [Python-计算机等级考试二级] [Python-数据分析] Python数据分析中 数据预处理:编码 将文字型数据转换为数值型 选择题 对于以下pyth ...

  5. python中的类属性和类方法_Python 面向对象,类的属性和 类的方法

    面向对象,类的属性和 类的方法 面向对象 类和对象 Python类定义 类属性 类方法 面向过程和面向对象 面向过程 和 面向对象 编程 面向过程 编程:函数式编程,C程序,shell等 面向对象 编 ...

  6. [YTU]_2618 ( B 求类中数据成员的最大值-类模板)

    题目描述 声明一个类模板,类模板中有三个相同类型的数据成员,有一函数来获取这三个数据成员的最大值. 类模板声明如下: template<class numtype> class Max { ...

  7. python类中最大的_python类的学习笔记(一)

    python中一切皆对象,类型的本质就是类. 在python中,用变量表示特征,用函数表示技能,因而具有相同特征和技能的一类事物就是'类',对象是则是这一类事物中具体的一个. 声明函数的方法: def ...

  8. C++ : 类的成员函数修改类中数据成员值

    遇到一个问题是:在类中有一个数据成员,是public的,在类的成员函数中进行修改,这个类的成员函数可能是要调用多次,想知道是不是每一次调用都有效 写了一个测试函数: #include <iost ...

  9. java类中数据成员

    一.数据成员特点 --表示java类的状态 --声明数据成员必须指定变量名以及所属类型,同时还可以指定其他属性 --数据成员的类型可以是基本数据类型,byte,short,char,int,long, ...

最新文章

  1. EBB-11、Linux启动流程
  2. 这个“老婆生成器”说我有5个前妻...
  3. tensorlfow.saved_model的使用
  4. 集训队脱单大法:这是一道只能由学姐我自己出数据的水题
  5. 微博 用户画像_“肖战”被抵制?Python爬虫揭秘肖战粉丝的人群画像
  6. 扔盘子(51Nod-1279)
  7. UVA 11806 Cheerleaders (容斥原理)
  8. php对html加密解密,PHP Mcrypt和HTML5加密API加密/解密
  9. 论文笔记_S2D.30_2017-CSVT_使用全卷积深度残差网络,作为分类问题,从单目图像估计深度
  10. 使用 Java Annotation 定制 Ant Junit Report
  11. LintCode 842: Origami
  12. html 两个表合并,html如何合并表格
  13. VeryCD将于本月关闭 P2P历史即将终结
  14. mysql中有关视图的概念、操作及作用
  15. 什么是CTP程序化交易:系统入门
  16. xv6-lab2-syscall
  17. 微信如何根据经纬度坐标查询具体地理位置
  18. 触摸屏和显示屏参考文献
  19. CorelDRAW VBA - 第一个Hello World程序
  20. 超全的学习资料——Oracle 从入门到精通

热门文章

  1. win7 java不是内部或外部命令_Win7系统输入javac命令提示“javac不是内部或外部命令”怎么办...
  2. 笔记本无法识别hdmi设备
  3. 【Java】流程控制 - 顺序结构、 选择(分支)结构(单分支、双分支、多分支、嵌套)、循环结构(for、while、do...while)、跳转语句(break、continue)
  4. 真正不需要网关的智能门锁——NBIoT智能门锁
  5. 解决笔记本散热问题的几种方法
  6. Mac下的安卓模拟器bluestacks安装apk
  7. excel填充序列_个性化自己的EXCEL设置1—如何自定义填充序列
  8. 【每周论文】20210110-BusTr_ConSTGAT_HetETA
  9. 华为系列故事-迈向新赛道摘抄
  10. 动手学深度学习:3.5 图像分类初级