1.类的基本用法

2.封装继承多态

3.特殊属性和方法

1.类的基本用法

1.1 类的定义与常用术语

1.2 类的创建使用和构造方法

1.3 self

1.4 类属性和实例属性

1.5 局部变量

1.6 类方法实例方法静态方法

1.7 拷贝类与成员

1.8 描述符

1.9 property()

1.1 类的定义与常用术语

类与对象,一种编程思想

类,一个模板,图纸,根据类可以创建很多相似,一类的实例(对象)

对象(实例),一个模板创建的具体实例,类不能直接使用,使用实例

实例化,类创建实例(对象),得到对象

类对象,类名,类本身

实例对象,实例名,实例化对象,类创建的实例

属性,变量

方法,函数

成员,属性和方法的统称

类成员:类属性和类方法

实例成员:实例属性和实例方法

类属性:类中函数之外

实例属性:类中函数内self.变量名

实例变量和类变量名字相同

优先调用实例变量

私有和公有

方法,

魔法方法

必须有self参数

1.2 类创建使用和构造方法

class 类名:

类属性....

类方法.....

#实例化,创建对象

实例名 = 类名(参数)

#调用

实例名.属性名

实例名.方法名

class test:

n=1

def say(self,c):

self.a=c

lemon = test()#实例化,创建对象

print(lemon.n)#输出类属性

lemon.say(3)#调用实例方法

print(lemon.a)#输出实例属性

__init__() 构造方法

创建类时自动调用

def __init__(self,...):

代码块

class test:

n=1

def __init__(self):

print(1)

lemon = test() #输出1

1.3 self

类可以创建很多实例,当实例调用类里面的方法时,为了区分哪个实例在调用

需要方法指向实例,实例才可以调用方法

类里面的方法第一个参数,自动绑定调用方法的实例

实例调用类里面的方法

class test:

def __init__(self):

print(1)

def a(self):

print(2)

def b():

print(3)

lemon = test() #输出1

lemon.a()#输出2

lemon.b()#报错

补全自动绑定 lemon = test(lemon)

这时 __init__(self) a(self) 中的self指向实例lemon

__init__(self)自动调用输出1

a(self) 调用方法,输出2

b()没有指向实例,实例不能调用

这里只是方便理解,实际上已经自动绑定了lemon,如果再次传入lemon会报错

1.4 类属性和实例属性

类属性:类中函数之外

实例属性:类中函数内self.变量名

实例属性和类属性名字相同,实例优先调用实例属性

类直接调用实例方法

实例属性self自动绑定实例对象,不绑定类对象

如果想用类调用实例,需要手动绑定一个实例

注意,此时仍然不能类名.实例属性

属性的调用与修改属性

class test:

la=1

lb=2

lc = 3

def __init__(self):

self.sa=1

self.lc = 9

def say(self):

self.sb=2

lemon = test()

lemon.say()#实例调用实例方法,拥有 .sb.sc 实例属性

test.say(lemon) #类调用实例方法,完全等于lemon.say()

test.la = 0#类属性

print(lemon.la)#被改变0

lemon.lb=0 #并非调用类属性,而是新建

print(test.lb) #不被改变 2

print(lemon.lc)#.lc 同名,优先调用实例 9

print(test.lc)#调用类属性3

1.5 局部变量

方法中没有self,属性不是self.属性

def say():

a=3

1.6 类方法实例方法静态方法

实例方法,普通方法,最少包含一个self参数,绑定实例

实例名直接调用

#类名手段传参绑定实例调用,不推荐

构造方法也属于实例方法

一般格式

def 方法名(self):

def say(self):

print("正在调用实例方法")

类方法,最少包含一个cls参数 ,绑定类

需要修饰符 @xlassmethod

类名直接调用

#创建实例,用实例名也可调用,不推荐

@classmethod

def info(cls):

print("正在调用类方法")

静态方法,没有self,cls特殊参数,可以有一般参数,不绑定任何对象

需要修饰符 @staticmethod

@staticmethod

def info():

print(正在调用静态方法)

1.7 拷贝类与成员

添加 类属性

添加 类中方法 的属性

1.8 描述符

https://www.cnblogs.com/chenyangyao/p/python_descriptor.html

1.9 property()

不破坏类封装原则,需要间接引用实例属性

直接引用实例名.属性改成 间接引用实例名.方法

class test:

def __init__(self,t):

self.n = t

def ss(self,t):#修改,写

self.n = t

def gg(self):#查看,读

return self.n

def dd(self):#删除(重置)

self.n = 0

lemon = test(1)

print(lemon.gg())#访问n的值 1

lemon.ss(2)#修改n的值

print(lemon.gg()) #2

property() 可以不破坏类封装原则,直接用 实例名.属性 引用

属性名 = property(fget = none,fset = none,fedl = none,doc = none)

fget读

fset写

fdel删

doc是文档字符串 说明作用

出现property()时

实例名.属性 = value 赋值自动调用 写的方法

print(实例名.属性) 输出时自动调用读的方法

del实例名.属性名del时自动调用 删除的方法

哪怕这些方法不是读写删,都会调用

class test:

def __init__(self,t):

self.__n = t

def ss(self,t): #写

self.__n = t

def gg(self): #读

return self.__n

def dd(self):#删除

self.__n = 0

n=property(gg,ss,dd,'出处')

#调取说明文档的2个方法

#print(test.n.__doc__)

#help(test.n)

lemon = test(2)

print(lemon.n)#调用gg函数

lemon.n = 4 #调用ss函数

del lemon.n #调用dd函数

注意:这里的self.__n 必须私有

如果是self.n

lemon.n这里是调用 gg() gg()又返回 lemon.n

返回的lemon.n又访问gg() gg()又返回,形成循环

所以必须私有,让外部的lemon.n 无法

n=property(gg,ss)

n 有 读 写 功能 没有删除功能

n=property(gg)

只读

还可以使用装饰器

@property只读

注意:这里调用方法不是调用属性,实例名.方法,但是末尾不用()

@方法名.setter 只写,前面必须有同名方法被property装饰过

@方法名.deleter只删

class test:

def __init__(self,t):

self.__name = t# 不让外面随便修改

@property

def n(self):

return self.__name

@n.setter # 之前必须有一个同名的方法被property装饰过

def n(self,value):

self.__name = value

@n.deleter

def n(self):

self.__name = 1

lemon = test(3)

print(lemon.n) #调用读功能

lemon.n = 4 #调用写功能

print(lemon.n)#调用读功能

del lemon.n #调用删功能

print(lemon.n)#调用读功能

python属性和局部变量_python类与对象1相关推荐

  1. python如何对一个属性或方法进行封装_python 类、对象、方法、属性

    在python中,一个对象的特征也称为属性(attribute).它所具有的行为也称为方法(method) 结论:对象=属性+方法 在python中,把具有相同属性和方法的对象归为一个类(class) ...

  2. Python基础(六)--类与对象

    目录 Python基础(六)--类与对象 1 类与对象的基本概念 1.1 什么是对象 1.2 什么是类 1.3 类与对象的关系 2 定义与初始化 2.1 类的定义 2.2 对象的初始化 2.3 动态增 ...

  3. python的类和对象_Python类与对象实验

    一.任务描述 本实验任务主要对Python类与对象进行一些基本操作,通过完成本实验任务,要求学生熟练掌握Python类与对象的关系,并对Python类与对象的基本操作进行整理并填写工作任务报告. 二. ...

  4. python 类组合_python类与对象的组合与继承

    1.把类的对象实例化放到一个新的类里面叫做类的组合,组合就是指几个横向关系的类放在一起,纵向关系的类放在一起是继承,根据实际应用场景确定.简单的说,组合用于"有一个"的场景中,继承 ...

  5. python属性访问顺序_Python 对象属性的访问

    在 Python 中,一切皆对象.属性访问可以理解为是从一个已有的对象中获得另一个对象的方法.对象属性的访问涉及到对象的 __dict__ 属性.描述符等概念,以及 __getattribute__. ...

  6. python属性使用教程_Python对象的属性访问过程详解

    只想回答一个问题: 当编译器要读取obj.field时, 发生了什么? 看似简单的属性访问, 其过程还蛮曲折的. 总共有以下几个step: 1. 如果obj 本身(一个instance )有这个属性, ...

  7. Python基础day08【面向对象(类、对象、属性)、魔方方法(init、str、del、repr)】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员]   目录 0.复习 1.类外部添加和获取对象属性 2.类内部操作属性 3.魔法方法 3.1.__i ...

  8. python中组合与继承的区别_python类与对象的组合与继承

    1.把类的对象实例化放到一个新的类里面叫做类的组合,组合就是指几个横向关系的类放在一起,纵向关系的类放在一起是继承,根据实际应用场景确定.简单的说,组合用于"有一个"的场景中,继承 ...

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

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

最新文章

  1. Druid详细配置信息
  2. Linux——进程管理
  3. IEnumerable 遍历用法
  4. 沈向洋谈文献阅读(转载)
  5. Angular JS 增删改查(弹框修改)
  6. 毕业设计 - 基于JAVA的小区/园区停车管理系统(简便易上手)
  7. IT技术分享的一点点总结
  8. 页面在微信端禁止缩放
  9. 2021中国大学MOOC 机器学习(温州大学) 最新中国大学MOOC满分章节测试答案
  10. android读取assets中的txt文件路径,Android获取assets文件路径
  11. 华山全敏还是全劲_一梦江湖华山加点_一梦江湖华山加点推荐2020_攻略
  12. 我自己的java软件开发职业规划
  13. 川普的退休生活?不,是AI算法的宅舞演绎。
  14. Linux虚拟化之EXSI
  15. 思科网络安全 第六章考试答案
  16. loj6539. 奇妙数论题
  17. 适合程序员/软件开发者的专业编辑器/笔记软件综合评测和全面推荐
  18. Geojson文件转为shp
  19. C语言:36人分配36块砖
  20. 树莓派使用GPIO控制风扇转速方法

热门文章

  1. Microbiome:宏基因组分箱流程MetaWRAP安装和数据库布置
  2. R语言使用unzip函数解压压缩文件(Extract or List Zip Archives)
  3. python使用matplotlib可视化包含倒影的柱状图(bar plot with shadow)、配置rcParams坐标轴正确显示负号(-)
  4. R语言可视化包ggplot2包绘制多个图形并将多个图像垂直堆叠c成一个图像实战(grid.arrange)
  5. Python使用pandas读取两个或者多个excel文件(xlsx)并进行数据连接(join)合并两个或者多个excel的信息
  6. R语言shapiro.test()函数实现Shapiro-Wilk正态分布检验
  7. 破译“生命天书”20年
  8. The Pediatric Cancer Genome Project   儿童癌症基因组计划
  9. 使用泰坦尼克号数据进行决策树、随机森林
  10. 2021毛纲源常考题型解题方法_总结2021年考研数学六大常考题型