最近两周内容大概回顾:

# 文件操作
#
# 模块:random,序列化模块,时间模块,collections,re,os,sys
# 模块与包的概念和导入方法
# 写代码的规范
# 正则表达式
# 异常处理
#
# 函数:
# 函数的命名空间和作用域
# 内置函数
# 闭包 : 装饰器函数
# 生成器函数:生成器表达式,各种推导式,迭代器
# 匿名函数
# 递归函数 : 二分查找算法 #作业1
# 基础数据类型
# 文件操作
# 函数
# 模块
# 面向对象
# 网络编程(空)
# 线程进程协程、IO多路复用(空)
# 其他 # 序列化模块——shelve
# import shelve
# f = shelve.open('ff')
# f['key'] = {'k1':'v1'}
# f.close()
# f = shelve.open('ff',flag='r') # 只读
# f['key'] = [1,2,3]
# f.close()
# f = shelve.open('ff')
# print(f['key'])
# f.close()

今天内容概要:

# 认识面向对象
# 了解面向对象编程
# 基础的 类 对象的语法 初识面向对象:
#生命值 100
#攻击力 10
#名字 XXX
#职业 XXX
def Person(life_value,aggr,name,job):
def attack(dog):
print('%s 攻击了 %s' % (person['name'], dog['name']))
dog['life_value'] = dog['life_value'] - person['aggr']
person = { #模子
'life_value':life_value,#生命值
'aggr':aggr, #aggressive攻击力
'name':name,
'job' : job,
'attack' : attack
}
return person boss_gold = Person(1000,2,'金老板','boss')
alex = Person(250,250,'alex','big_boss')
# print(boss_gold['life_value']) def Dog(name,life_value,aggr,kind):
def bite(person):
print('%s 咬了 %s' % (dog['name'], person['name']))
person['life_value'] -= dog['aggr']
dog ={
'name':name,
'life_value':life_value,
'aggr' : aggr,
'kind' : kind,
'bite' : bite
}
return dog
alph = Dog('alphgou',10000,999,'AI')
flower = Dog('小花',150,300,'2ha')
alph['bite'](boss_gold)
alex['attack'](flower) #这就是面向对象编程
#面向对象编程 是一种思想
#对象就是具体的拥有准确属性值的一些变量
#类:一类具有相同属性和方法的事物
#字典 _ 类
d1 = {'k1':'v1'} #对象
#动物园:老虎 狮子 猴 # attack(boss_gold,flower)
# print(flower['life_value'])
# bite(alph,alex)
# print(alex['life_value'])

面向对象:

def 函数名():
'''函数体'''
pass # class Person: #类名有两个作用
# country = '中国' #静态属性、数据属性
# def walk(self): #动态属性、函数属性、方法
# print('walk') #1.属性引用
# print(Person.country) #静态属性的查看
# print(Person.walk)
# Person.role = '人' #添加一个新静态属性
# Person.country = '印度' #修改一个新静态属性
# del Person.role #删除一个静态属性
# print(Person.__dict__)
# print(Person.walk()) #报错 少self参数
# Person.__dict__['country'] = '印度' #报错 不能改变
# print(Person.__dict__['country'])
# print(Person.country) #类能完成的第二个功能:实例化对象
#实例化:从一个类中创造一个具体的对象的过程
# p = Person()
# print(p) #Person的对象 # class Person: #类名有两个作用
# country = '中国' #静态属性、数据属性
# def __init__(self,life_value,aggr,name,job): #初始化方法
# #self = {'lv':life_value}
# self.lv = life_value #属性,对象属性
# self.aggr = aggr
# self.name = name
# self.job = job
# def walk(self): #动态属性、函数属性、方法
# print('%s is walking'%self.name)
#
# # p = Person() #如何让对象拥有具体的属性
# p = Person(1000,2,'金老板','boss') #如何让对象拥有具体的属性
# p.walk() # Person.walk(p)
# print(p.lv) #Person的对象
# print(p.aggr) #Person的对象
# print(p.name) #Person的对象
# print(p.job) #Person的对象
# p.sex = 'lady_boy' #添加一个属性
# print(p.sex)
# p.sex = 'girl' #属性的修改
# print(p.sex) #属性的删除
# del p.sex # print(p.__dict__)
# print(p.__dict__['lv']) #查看
# p.__dict__['lv'] = 998 #对象名.__dict__中的属性值可以被修改
# print(p.__dict__['lv'],p.lv)
# p.__dict__['sex'] = 'lady_boy' #对象名.__dict__中的属性值可以增加
# print(p.__dict__,p.sex)
# p.__dict__.pop('sex') #对象名.__dict__中的属性值可以被删除
# print(p.__dict__)
#类
# 类的定义 class关键字 类名的首字母大写
# 类中直接定义属性:静态属性(变量) 和 动态属性(函数)
# 类名的两个作用:属性的引用,实例化对象
# 类名和属性的操作:对象名.属性名 对象名.__dict__['属性名'](不能修改) #实例化 ——类名(参数)
#构造方法:造对象
#初始化__init__:给这个赤裸裸的对象添加一些属性 __init__
#返回了一个初始化之后的对象 #__init__方法:初始化方法,可以没有。给对象添加一些必要的基础属性 #self的含义:就是这个对象本身 #对象和属性的操作:对象名.属性名 对象名.__dict__['属性名'] class Person: #类名有两个作用
country = '中国' #静态属性、数据属性
def __init__(self,life_value,aggr,name,job): #初始化方法
#self = {'lv':life_value}
self.lv = life_value #属性,对象属性
self.aggr = aggr
self.name = name
self.job = job
def walk(self): #动态属性、函数属性、方法
print('%s is walking'%self.name) boss_gold = Person(10,1,'太白太黑太亮','old_driver')
alex = Person(100,2.5,'张嘴闭嘴tesla','鸡汤哥')
# boss_gold.walk()
# alex.walk()
boss_gold.sex = 'None'
print(alex.__dict__)

面向对象交互:

#人类 :
# 属性 :life_value,aggr,name,job
# 方法: attack
class Person:
def __init__(self,life_value,aggr,name,job):
self.life = life_value
self.aggressive = aggr
self.name = name
self.job = job def attack(self,dog_obj): #boss_gold,tiedan
print('%s 攻击了 %s'%(self.name,dog_obj.name))
dog_obj.life = dog_obj.life - self.aggressive #狗类:
# 属性:life_value,aggr,name,kind
# 方法:bite
class Dog:
def __init__(self,life_value,aggr,name,kind):
self.life = life_value
self.aggressive = aggr
self.name = name
self.kind = kind def bite(self,person_obj):
print('%s 咬了 %s' % (self.name, person_obj.name))
person_obj.life -= self.aggressive tiedan = Dog(1000,100,'铁蛋','土狗')
boss_gold = Person(100,2.5,'太黑','old_driver')
# boss_gold.attack(tiedan) #Person.attack(boss_gold,tiedan)
# print(tiedan.life)
# tiedan.bite(boss_gold)
# print(boss_gold.life)
#三个攻击技能 #面向对象的交互
# 作业零:画图
# 基础数据类型
# 文件操作
# 函数
# 模块
# 面向对象
# 网络编程(空)
# 线程进程协程、IO多路复用(空)
# 其他 # 练习一:在终端输出如下信息
#
# 小明,10岁,男,上山去砍柴
# 小明,10岁,男,开车去东北
# 小明,10岁,男,最爱大保健
# 老李,90岁,男,上山去砍柴
# 老李,90岁,男,开车去东北
# 老李,90岁,男,最爱大保健
# 老张… # 练习二:
#创造一个圆形类,属性:半径,两个方法:求周长,求面积 # 练习三:
#继续写人狗大战游戏 # 预习:http://www.cnblogs.com/Eva-J/articles/7293890.html # 周末:神经网络公开课

==============================================================================================================================================================================================================================================================================

判断一个函数是方法还是一个类

from types import MethodType(方法),FunctionType(函数)
def func():
pass
print(isinstance(func,FunctionType)) # True class A():
def aaa(self):
pass
print(isinstance(aaa,FunctionType)) # True
a=A()
print(isinstance(a.aaa,MethodType)) # True要有实例化出来的对象才可以,如果只是用类名去调用的话还是function,只有用实例化出来的对象去调用才可以得到method 我们的函数只有跟我们的实例化出来的对象有绑定关系才能称之为方法,否则都是函数,即便它是写到类里面的方法,没有跟我们的类实例化出来的对象进行绑定,它依然是函数,而不是类里面的方法.

day23 面向对象 函数和方法区分的更多相关文章

  1. python之面向对象函数与方法,反射,双下方法

    一.函数和方法 1.函数和方法的区别 函数: 全都是显性传参,手动传参,与对象无关 方法: 存在隐性传参,与对象有关 1.1通过函数名可以判断 len()就是函数 str.count()就是方法 de ...

  2. 面向对象中特殊方法的补充、isinstance/issubclass/type、方法和函数、反射

    一.面向对象中特殊方法的补充 1.__str__ 能将对象名改成你想要的字符串,但是类型还是类 class Foo(object): def __init__(self): pass def func ...

  3. OO开发思想:面向对象的开发方法(Object oriented,OO)

    面向对象的开发方法(Object oriented,OO)认为是好文章吧,拿来分享一下(转载) 面向对象的开发方法(Object oriented,OO) 从事软件开发的工程 师们常常有这样 的体会: ...

  4. python--区分函数和方法, 反射

    1.  isinstance,   type,   issubclass isinstance(): 判断你给的xxx对象是否是xxxxx类型的,只支持向上判断 isinstance(object, ...

  5. 学习笔记:jquery1.9版本后废弃的函数和方法

    jQuery1.9+ 废弃的函数和方法 升级Jquery版本遇到的问题 (转载自:http://www.ppblog.cn/jquery1-9live.html  版权归原作者所有) jQuery1. ...

  6. python 面向对象、特殊方法与多范式、对象的属性及与其他语言的差异

    1.python 面向对象 文章内容摘自:http://www.cnblogs.com/vamei/archive/2012/06/02/2532018.html   1.__init__() 创建对 ...

  7. call 方法在使用一个指定的this值和若干个指定的参数值的前提下调用某个函数或方法.

    call 方法在使用一个指定的this值和若干个指定的参数值的前提下调用某个函数或方法. 注意:该函数的语法与 apply() 方法的语法几乎完全相同,唯一的区别在于,apply()方法接受的是一个参 ...

  8. 你不知道的JavaScript--Item8 函数,方法,构造函数调用

    1.函数调用 Function绝对是JavaScript中的重中之重.在JavaScript中,Function承担了procedures, methods, constructors甚至是class ...

  9. 自学Python之路-Python基础+模块+面向对象+函数

    自学Python之路-Python基础+模块+面向对象+函数 自学Python之路[第一回]:初识Python    1.1 自学Python1.1-简介    1.2 自学Python1.2-环境的 ...

随机推荐

  1. python中的各种锁

    一.全局解释器锁(GIL) 1.什么是全局解释器锁 在同一个进程中只要有一个线程获取了全局解释器(cpu)的使用权限,那么其他的线程就必须等待该线程的全局解释器(cpu)使 用权消失后才能使用全局解释 ...

  2. 洛谷P4546 [THUWC2017]在美妙的数学王国中畅游 [LCT,泰勒展开]

    传送门 毒瘤出题人卡精度-- 思路 看到森林里加边删边,容易想到LCT. 然而LCT上似乎很难实现往一条链里代一个数进去求和,怎么办呢? 善良的出题人在下方给了提示:把奇怪的函数泰勒展开搞成多项式,就 ...

  3. Java二叉树的实现与特点

    二叉树是一种非常重要的数据结构,它同时具有数组和链表各自的特点:它可以像数组一样快速查找,也可以像链表一样快速添加.但是他也有自己的缺点:删除操作复杂. 我们先介绍一些关于二叉树的概念名词. 二叉树: ...

  4. Confluence 6 从生产环境中恢复一个测试实例

    请参考 Restoring a Test Instance from Production 页面中的内容获得更多完整的说明. 很多 Confluence 的管理员将会使用生产实例运行完整数据和服务的 ...

  5. Confluence 6 数据库整合的限制

    数据库整合的限制 注意: Confluence 自带的 XML 方式导出方法并不适用于备份和整合大数据集.这里有一些第三方的数据库工具你可以使用能够帮助你对大数据集进行备份和整合.如果你在选择正确工具 ...

  6. vue-cli 3配置接口代理

    vue.config.js vue.config.js是一个可选的配置文件,新建该文件,存放在项目根目录(将自动加载)中 // 作为配置文件,直接导出配置对象即可 module.exports = { ...

  7. 【scapy】读取pcap

    scapy读取pcap包 假设有pcap包test.pcap,读取其中的分层流量信息 代码: import scapy_http.http try: import scapy.all as scapy ...

  8. MongoDB----提升

    文档之间的联系 一对一:通过文档内嵌的形式体现一对一的关系 db.user.insert({name:"xiaoming",frind:{name:"xiahua&quo ...

  9. cf869C组合计数问题

    如果在两个区域里连点,两个区域内选的点数一定要相等 即a中选出i个点,必须与b中选出i个点相连 连接种类数为  然后我们再来看,如果ab中有两点相连,其中一点再与c相连会出事吗? 很显然不会对答案产生 ...

  10. 第八周学习总结-C#、C++

    2018年9月2日 今天是小学期开始第三天,本周前几天看了看C#和C++,用C#窗体做了个计算器,然后还用Scratch做了一个贪吃蛇的脚本. 31号小学期开始,到今天我把A类基本做完了.一开始做通讯 ...