一、类的定义

# 面向对象
#有意义的面向对象代码
# 类 = 面向对象
# 类、对象
#实例化
# 类最基本的作用:封装
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. java String字符串操作 字符串加密等

    子串加密 1,设计思想 (1)输入一个字符串 (2)通过toCharArray()的方法将字符串转换成字符数组 (3)新建一个字符数组用来存储修改后的字符数组 2,程序流程图 3,源代码 packag ...

  2. HDU 4069 数独

    好久没做题了,建图搞了好久…… 然后,判是否有多解的时候会把原来的答案覆盖掉…… 这里没注意,弄了一下午…… 代码: #include <iostream> #include <cs ...

  3. 【codeforces 816B】Karen and Coffee

    [题目链接]:http://codeforces.com/contest/816/problem/B [题意] 给你很多个区间[l,r]; 1<=l<=r<=2e5 一个数字如果被k ...

  4. 低价购买 洛谷1108 codevs4748 dp

    首先,,我相信第一问是可以做出来的,,,做不出来自行面壁思过,,, 第二问,我们可以发现,如果f[i]为1时应该将其g[i]初始化为1,当初就是因为这个wa了一个世纪,之后先考虑不需要判重时的情况,如 ...

  5. hdoj 1719 Friend

    Friend Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  6. hdoj--2282--Chocolate(最小费用)

    Chocolate Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  7. java9新特性-11-String存储结构变更

    1. 官方Feature JEP254: Compact Strings 2. 产生背景 Motivation The current implementation of the String cla ...

  8. PHP+MySQL登录注册,完整版,详细注释

    纯手写打造. 下载地址:http://download.csdn.net/detail/qq_33599520/9779970 项目结构: 下面是代码: <!DOCTYPE html> & ...

  9. MFC 创建新项目

    本文主要介绍如何是使用vc++创建MFC项目,并简单介绍整个项目的基本框架.文件–>新建,会弹出以下新建文件(项目)类型的界面,如下 按上图的步骤u,创建一个MFC工程.其中步骤3中的CardD ...

  10. POJ 1144 Network【割顶】

    学习的这一篇:https://www.byvoid.com/blog/biconnect 割顶:对于无向图G,如果删除某个点u后,连通分量数目增加,称u为图的关节点或者割顶 u为割顶的条件: (1)u ...