Python(七) 高级部分:面向对象
一、类的定义
# 面向对象
#有意义的面向对象代码
# 类 = 面向对象
# 类、对象
#实例化
# 类最基本的作用:封装
class Student():
name = ''
age = 0 def print_file(self):
print('name'+self.name)
print('name'+str(self.age)) student=Student() #实例化
student.print_file()
二、浅谈函数与方法的区别
方法 和 函数的区别
方法 :设计层面
函数:程序运行、过去式的一种称谓
三、类与对象。
类是描述 一类的 行为和特征
对象是具体的描述对象
类像一个模板一样 可以生成许多不同的对象
四、构造函数
#类、对象 class Student():
name = ''
age = 0 #行为 与 特征
def __init__(self):
#构造函数
print('student') def print_file(self):
print('name'+self.name)
print('name'+str(self.age)) s=Student()
s.__init__() student #实例化时候 调用了构造函数
student #单独调用了了构造函数
构造函数不能返回除了None 以外的值
五、区别模块变量与类中的变量
六、类变量与实例变量
类变量:和类相关的变量
实例变量:和对象相关联的变量
class Student():
name = '' #类变量
age = 0 #行为 与 特征
#类变量、实例变量
def __init__(self,name,age):
#构造函数
#初始化对象的属性
self.name=name #定义实例变量
self.age=age
# print('student') def print_file(self):
print('name'+self.name)
print('name'+str(self.age)) s=Student('大明',20)
print(s.name) #打印实例变量 需要在类里面保存实例变量
大明
''
七、类与对象的变量查找顺序
实例名称. __dict__ 类中实例变量
八、self与实例方法
self 代表的实例 而不是类
九、在实例方法中访问实例变量与类变量
class Student(): name = 'qiyue' #类变量
age = #行为 与 特征
#类变量、实例变量
def __init__(self,name,age):
#构造函数
#初始化对象的属性
self.name=name #定义实例变量
self.age=age
print(self.name)
print(self.__class__.name) #在实例方法中访问类变量
print(Student.name)
# print('student') def print_file(self):
print('name'+self.name)
print('name'+str(self.age)) s=Student('大明',) 大明 #实例变量
qiyue #访问类变量
qiyue # 类变量
十、类方法
class Student(): sum =
name = 'qiyue' #类变量
age = #行为 与 特征
#类变量、实例变量
def __init__(self,name,age):
#构造函数
#初始化对象的属性
self.name=name #定义实例变量
self.age=age
self.__class__.sum +=
print('当前学生总数为:'+ str(self.__class__.sum))
# print('student') #实例方法
def do_homework(self):
print('do_homework') @classmethod #类方法
def plus_sum(cls):
cls.sum +=
print(cls.sum) s=Student('大明',)
Student.plus_sum() 结果:
当前学生总数为:
十一、静态方法
和类和对象没有关系 建议不要经常用
@staticmethod #静态方法
def add(x,y):
print('This is 静态方法')
十二、成员可见性:公开和私有
通过方法来改变类中变量的值
public private python中没有这些关键字
在变量和方法前面加上双下划线 name __name
python 允许 实例化点来添加新的变量
通过 _类名__私有变量
十三、没有什么是不能访问
十四、继承.
class Human():
sum =
def __init__(self,name,age):
self.name = name
self.age = str(age) def get_name(self):
print(self.name) class Student(Human):
# sum =
def __init__(self,school,name,age):
self.school = school
Human.__init__(self,name,age)
# self.__score =
# self.__class__.sum += def do_homework(self):
print('do_homework') s = Student('学校','拾光',)
print(s.sum)
print(s.name)
print(s.age)
print(s.get_name()) 结果: 拾光 拾光
None
十五、子类方法调用父类方法:super关键字
class Human():
sum =
def __init__(self,name,age):
self.name = name
self.age = str(age) def get_name(self):
print(self.name) class Student(Human):
# sum =
def __init__(self,school,name,age):
self.school = school
# Human.__init__(self,name,age)
super(Student,self).__init__(name,age)
# self.__score =
# self.__class__.sum += def do_homework(self):
print('do_homework') s = Student('学校','拾光',)
print(s.sum)
print(s.name)
print(s.age)
print(s.get_name()) 结果: 拾光 拾光
None
Python(七) 高级部分:面向对象的更多相关文章
- 简学Python第七章__class面向对象高级用法与反射
Python第七章__class面向对象高级用法与反射 欢迎加入Linux_Python学习群 群号:478616847 目录: Python中关于oop的常用术语 类的特殊方法 元类 反射 一.P ...
- 进击的Python【第七章】:Python的高级应用(四)面向对象编程进阶
Python的高级应用(三)面向对象编程进阶 本章学习要点: 面向对象高级语法部分 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 一.面向对象高级语法部分 静态方法 ...
- python 高级之面向对象初级
python 高级之面向对象初级 本节内容 类的创建 类的构造方法 面向对象之封装 面向对象之继承 面向对象之多态 面向对象之成员 property 1.类的创建 面向对象:对函数进行分类和封装,让开 ...
- 进击的Python【第六章】:Python的高级应用(三)面向对象编程
Python的高级应用(三)面向对象编程 本章学习要点: 面向对象编程介绍 面向对象与面向过程编程的区别 为什么要用面向对象编程思想 面向对象的相关概念 一.面向对象编程介绍 面向对象程序设计(英语: ...
- python高级之面向对象高级
python高级之面向对象高级 本节内容 成员修饰符 特殊成员 类与对象 异常处理 反射/自省 单例模式 1.成员修饰符 python的类中只有私有成员和公有成员两种,不像c++中的类有公有成员(pu ...
- 第四篇:python 高级之面向对象初级
python 高级之面向对象初级 python 高级之面向对象初级 本节内容 类的创建 类的构造方法 面向对象之封装 面向对象之继承 面向对象之多态 面向对象之成员 property 1.类的创建 ...
- 第五篇:python高级之面向对象高级
python高级之面向对象高级 python高级之面向对象高级 本节内容 成员修饰符 特殊成员 类与对象 异常处理 反射/自省 单例模式 1.成员修饰符 python的类中只有私有成员和公有成员两 ...
- Python【第七篇】面向对象进阶
大纲 一.面向对象高级语法 1.静态方法.类方法.属性方法 2.类的特殊成员方法 3.反射 二.异常处理 三.网络编程之socket基础 一.面向对象高级语法 1.静态方法:名义上归类管理,实际上静态 ...
- 进击的Python【第五章】:Python的高级应用(二)常用模块
Python的高级应用(二)常用模块学习 本章学习要点: Python模块的定义 time &datetime模块 random模块 os模块 sys模块 shutil模块 ConfigPar ...
随机推荐
- Docker之Mysql安装及配置
原文:Docker之Mysql安装及配置 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/zhaobw831/article/details/8014 ...
- HTTP——学习笔记(3)
HTTP报文:用于HTTP协议交互的信息,客户端的HTTP报文叫做 请求报文,响应端的叫做 响应报文 本质:是由多行(用CR+LF作换行符)数据构成的字符串文本 注:CR:回车,打印针回到行首 L ...
- 【图灵杯 F】一道简单的递推题(矩阵快速幂,乘法模板)
Description 存在如下递推式: F(n+1)=A1*F(n)+A2*F(n-1)+-+An*F(1) F(n+2)=A1*F(n+1)+A2*F(n)+-+An*F(2) - 求第K项的值对 ...
- libTIFF 图像读取与保存
本系列文章由 @YhL_Leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/YhL_Leo/article/details/49848391 1 头文件 libtif ...
- 电源管理ACPI、及APM、GNU/Linux系统下的相应命令使用
/********************************************************************* * Author : Samson * Date ...
- how to deal with "no such file error or diretory" error for a new programmer in QT creator
when i try to develop a hello demo in QT creator with the code following : #include<QApplication& ...
- mysql-数据分组
一.创建分组 上面所讲的语句都是建立在表的所有数据或匹配特定的where子句的数据上进行的.是否能够进行分组,在进行汇总计算哪儿?例如:要想返回每个供应商提供的产品数目怎么办? 分组是在select语 ...
- Java transientkeyword使用小记
1. transient的作用及用法 我们都知道一个对象仅仅要实现了Serilizable接口,这个对象就能够被序列化,java的这样的序列化模式为开发人员提供了非常多便利.我们能够不必关系详细序列化 ...
- 查看CPU是几核
命令1 (查看有几个CPU):cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l 命令2 (每个CPU几核):cat /p ...
- 8.变量内存CPU原理
编译器先明确是什么类型,然后明确变量名,变量表管理所有的变量,不在变量表内部的变量不能引用.每个变量对应一整块内存 a+1所计算出来的值在寄存器中,只有变量可以被赋值,变量必须在内存里面 c语言内嵌汇 ...