一、类的定义

# 面向对象
#有意义的面向对象代码
# 类 = 面向对象
# 类、对象
#实例化
# 类最基本的作用:封装
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) #打印实例变量 需要在类里面保存实例变量
  print(Student.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(七) 高级部分:面向对象的更多相关文章

  1. 简学Python第七章__class面向对象高级用法与反射

    Python第七章__class面向对象高级用法与反射 欢迎加入Linux_Python学习群  群号:478616847 目录: Python中关于oop的常用术语 类的特殊方法 元类 反射 一.P ...

  2. 进击的Python【第七章】:Python的高级应用(四)面向对象编程进阶

    Python的高级应用(三)面向对象编程进阶 本章学习要点: 面向对象高级语法部分 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 一.面向对象高级语法部分 静态方法 ...

  3. python 高级之面向对象初级

    python 高级之面向对象初级 本节内容 类的创建 类的构造方法 面向对象之封装 面向对象之继承 面向对象之多态 面向对象之成员 property 1.类的创建 面向对象:对函数进行分类和封装,让开 ...

  4. 进击的Python【第六章】:Python的高级应用(三)面向对象编程

    Python的高级应用(三)面向对象编程 本章学习要点: 面向对象编程介绍 面向对象与面向过程编程的区别 为什么要用面向对象编程思想 面向对象的相关概念 一.面向对象编程介绍 面向对象程序设计(英语: ...

  5. python高级之面向对象高级

    python高级之面向对象高级 本节内容 成员修饰符 特殊成员 类与对象 异常处理 反射/自省 单例模式 1.成员修饰符 python的类中只有私有成员和公有成员两种,不像c++中的类有公有成员(pu ...

  6. 第四篇:python 高级之面向对象初级

    python 高级之面向对象初级   python 高级之面向对象初级 本节内容 类的创建 类的构造方法 面向对象之封装 面向对象之继承 面向对象之多态 面向对象之成员 property 1.类的创建 ...

  7. 第五篇:python高级之面向对象高级

    python高级之面向对象高级   python高级之面向对象高级 本节内容 成员修饰符 特殊成员 类与对象 异常处理 反射/自省 单例模式 1.成员修饰符 python的类中只有私有成员和公有成员两 ...

  8. Python【第七篇】面向对象进阶

    大纲 一.面向对象高级语法 1.静态方法.类方法.属性方法 2.类的特殊成员方法 3.反射 二.异常处理 三.网络编程之socket基础 一.面向对象高级语法 1.静态方法:名义上归类管理,实际上静态 ...

  9. 进击的Python【第五章】:Python的高级应用(二)常用模块

    Python的高级应用(二)常用模块学习 本章学习要点: Python模块的定义 time &datetime模块 random模块 os模块 sys模块 shutil模块 ConfigPar ...

随机推荐

  1. CodeForces 453A

    Twilight Sparkle was playing Ludo with her friends Rainbow Dash, Apple Jack and Flutter Shy. But she ...

  2. VMware 下扩展linux硬盘空间

    linux下扩展硬盘有非常多种方式,在扩展之前.尽量看看自己的空间存在的有哪些盘,然后再进行扩展. 假设是扩展的话,磁盘的符号和已经有的符号一样,比方都是sda的设备,知识分区不同.可能是sda3 s ...

  3. Android bluetooth介绍(一):基本概念及硬件接口

    关键词:蓝牙硬件接口 UART  PCM  blueZ 版本号:基于android4.2之前版本号 bluez内核:linux/linux3.08系统:android/android4.1.3.4作者 ...

  4. XMPP添加删除好友

    在现阶段的通信服务中.各种标准都有,因此会出现无法实现相互连通,而XMPP(Extensible Message and presence Protocol)协议的出现,实现了整个及时通信服务协议的互 ...

  5. sublime text3 3143注册码

    注册码: -– BEGIN LICENSE -– TwitterInc 200 User License EA7E-890007 1D77F72E 390CDD93 4DCBA022 FAF60790 ...

  6. BZOJ 3110 线段树套线段树

    思路: 外围一个权值线段树 里面是个区间线段树 搞一个标记永久化 //By SiriusRen #include <cstdio> #include <cstring> #in ...

  7. 求推荐go语言开发工具及go语言应该以哪种目录结构组织代码?

    go语言的开发工具推荐? go语言开发普通程序及开发web程序的时候,应该以哪种目录结构组织代码? 求推荐go语言开发工具及go语言应该以哪种目录结构组织代码? >> golang这个答案 ...

  8. html页面颜色名称和颜色值转换

    public static string ToHtmlColor(string colorName) { try { if (colorName.StartsWith("#")) ...

  9. 洛谷P3332 [ZJOI2013]K大数查询 权值线段树套区间线段树_标记永久化

    Code: #include <cstdio> #include <algorithm> #include <string> #include <cstrin ...

  10. [POI2002][HAOI2007]反素数 数论 搜索 好题

    题目描述: 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数1,2,4, ...