python -- 面向对象 - 反射
class Animal:
def eat(self):
print('动物的世界你不懂') class Cat(Animal):
def play(self):
print('毛霸王') c = Cat() print(isinstance(c,Cat)) # True
# 向上判断
print(isinstance(c,Animal)) # True a = Animal()
print(isinstance(a,Cat)) # False # 不能向下判断 print(type(a)) # <class '__main__.Animal'>
print(type([])) # <class 'list'>
print(type(c)) # <class '__main__.Cat'> # 判断 **类是否是**类的子类
print(issubclass(Cat,Animal)) # True
print(issubclass(Animal,Cat)) # False
def cul(a,b): if (type(a) == int or type(a) == float) and (type(b) == int or type(b) == float):
return a+b
else:
print('提供的数据无法计算') print(cul(6,7))
def func():
print('我是函数') class Foo:
def eat(self):
print('要吃饭了') print(func) # <function func at 0x0000020EDE211E18>
f = Foo()
f.eat() print(f.eat) # <bound method Foo.eat of <__main__.Foo object at 0x00000237390BE358>>
# 类也是对象
# 这个对象:属性就是类变量
# 方法就是类方法 class Person():
def eat(self):
print('明天去吃鱼') @classmethod
def he(cls):
print('我是类方法') @staticmethod
def lang():
print('我是静态方法') p = Person()
Person.eat(1) # 不符合面向对象的思维 print(p.eat) # <bound method Person.eat of <__main__.Person object at 0x00000253E992E3C8>>
print(Person.eat) # <function Person.eat at 0x00000253E992DF28> # 类方法都是方法
print(Person.he) # <bound method Person.he of <class '__main__.Person'>>
print(p.he) # <bound method Person.he of <class '__main__.Person'>> # 静态方法都是函数
print(Person.lang) # <function Person.lang at 0x0000024C942F1158>
print(p.lang) # <function Person.lang at 0x0000024C942F1158>
def eat():
print('吃遍人间美味') def travel():
print('游遍万水千山') def see():
print('看遍人间繁华') def play():
print('玩玩玩') def learn():
print('好好学习天天向上')
import master
while 1:
content = input('请输入你要测试的功能:')
# 判断 XXX对象中是否包含了xxx if hasattr(master,content):
s = getattr(master,content)
s()
print('有这个功能')
else:
print('没有这个功能')
class Foo:
def drink(self):
print('要少喝酒') f = Foo()
s = (getattr(f,'drink')) # 从对象中获取到str属性的值
s()
print(hasattr(f,'eat')) # 判断对象中是否包含str属性
setattr(f,'eat','西瓜') # 把对象中的str属性设置为value
print(f.eat)
setattr(f,'eat',lambda x:x+1)
print(f.eat(3))
print(f.eat) # 把str属性从对象中删除
delattr(f,"eat")
print(hasattr(f,'eat'))
python -- 面向对象 - 反射的更多相关文章
- python面向对象 : 反射和内置方法
一. 反射 1. isinstance()和issubclass() isinstance( 对象名, 类名) : 判断对象所属关系,包括父类 (注:type(对象名) is 类名 : 判断对象所属 ...
- python面向对象反射-框架原理-动态导入-元类-自定义类-单例模式-项目的生命周期-05
反射 reflect 反射(reflect)其实是反省,自省的意思 反省:指的是一个对象应该具备可以检测.修改.增加自身属性的能力 反射:通过字符串获取对象或者类的属性,进行操作 设计框架时需要通过反 ...
- python 面向对象反射以及内置方法
一.反射 什么是反射:可以用字符串的方式去访问对象的属性,调用对象的方法(但是不能去访问方法),python中一切皆对象,都可以使用放射. 反射的四种方法: hasattr:hasattr(objec ...
- python面向对象(反射)(四)
1. isinstance, type, issubclass isinstance: 判断你给对象是否是xx类型的. (向上判断 type: 返回xxx对象的数据类型 issubclass: 判断x ...
- python面向对象--反射机制
class Black: feture="ugly" def __init__(self,name,addr): self.addr=addr self.name=name def ...
- Python 面向对象之反射
Python 面向对象之反射 TOC 什么是反射? hasattr getattr setattr delattr 哪些对象可以使用反射 反射的好处 例子一 例子二 什么是反射? 程序可以访问.检查和 ...
- Python面向对象之-反射
Python中一切皆对象,在Python中的反射:通过字符串的形式操作对象的属性 hasattr 判断是否有改属性或者方法,有返回True,没有返回false getattr 如果是属性获得该属性 ...
- python 面向对象编程 之 反射
1 什么是反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被 ...
- Python之面向对象-反射
一.什么是反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问,检测和修改它本省状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被 ...
随机推荐
- #学号 20175201张驰 《Java程序设计》第1周学习总结
教材学习内容总结 第一章 ·第一章的内容相对简单,我并未遇到大的困难. ·1.Java特点:语法简单.面向对象.与平台无关.动态. ·2.关于编写源文件:源文件名字必须与public类的名字相同:保存 ...
- Python3使用AES加密的库函数PyCrypto、PyCryptodome
我们在网上查看Python爬虫教程的时候,细心的朋友会发现:很多网站为了降低服务器的请求压力都做了各式各样的反爬策略,浏览器通过http post请求服务器端数据时,传输的data字段很多都是经过加密 ...
- python中Hadamard product和matrix product的区分
先简单说一下Hadamard product: (参照维基百科:https://en.wikipedia.org/wiki/Hadamard_product_(matrices)) 而matrix ...
- ionic 需要注意的知识点
- 使用Chrome远程调试GenyMotion上的WebView程序
WebView让我们方便的使用熟悉的Html/JS/Css来开发APP.但是,当出现问题时,却没有PC上那么方便的排查问题.PC上,前端的问题我们可以使用Chrome的开发者工具方便的调试.Andro ...
- 详解C# 网络编程系列:实现类似QQ的即时通信程序
https://www.jb51.net/article/101289.htm 引言: 前面专题中介绍了UDP.TCP和P2P编程,并且通过一些小的示例来让大家更好的理解它们的工作原理以及怎样.Net ...
- DOM_xss预备知识
http://xuelinf.github.io/2016/05/18/%E7%BC%96%E7%A0%81%E4%B8%8E%E8%A7%A3%E7%A0%81-%E6%B5%8F%E8%A7%88 ...
- phpstudy----------phpstudy开启apache日志并且按照日期划分创建。
1.CustomLog "|bin/rotatelogs.exe logs/access_%Y_%m_%d.log 86400 480" combined 这里修改成上图所示,然后 ...
- Javascript根据id获取数组对象
在业务中,列表页跳转详情页时,经常会将Id值传入,然后再根据id值异步获取数据. 假设有服务端的json数据: <注意,这里的data是指已经从后端获取的json, 而非后端原始的文件> ...
- pageresponse.min.js自动缩放页面改写
/* * 名称 :移动端响应式框架 * 作者 :白树 http://peunzhang.cnblogs.com * 版本 :v2.1 * 日期 :2015.10.13 * 兼容 :ios 5+.and ...