Day8 面向对象反射

反射:通过字符串来访问到所对应的值(反射到真实的属性上)。

eg:

 1 class Foo:
 2     x=1
 3     def __init__(self,name):
 4         self.name=name
 5
 6     def f1(self):
 7         print(‘from f1‘)
 8
 9
10 # print(Foo.x) #Foo.__dict__[‘x‘]
11
12 f=Foo(‘egon‘)
13 # print(f.__dict__)
14 #
15 # #1:
16 # print(f.name)
17
18 #2:
19 # print(f.__dict__[‘name‘])
20
21 #hasattr
22 #反射到字典所对应的值
23 # print(hasattr(f,‘name‘)) #f.name
24 # print(hasattr(f,‘f1‘)) #f.f1
25 # print(hasattr(f,‘x‘)) #f.x
26
27
28 #setattr
29 #设置某个属性
30 # setattr(f,‘age‘,18)#f.age=18
31
32 #getattr
33 #得到某个属性的值
34 # print(getattr(f,‘name‘))#f.name
35 # print(getattr(f,‘abc‘,None))#f.abc
36 # print(getattr(f,‘name‘,None))#f.abc
37
38 # func=getattr(f,‘f1‘)#f.f1
39 # print(func)
40 # func()
41 #
42
43 #delattr
44 #删除某个属性的值
45 # delattr(f,‘name‘)# del f.name
46 # print(f.__dict__)

定义某个功能,输入某条命令,打印下面的功能:

class Ftpserver:
    def __init__(self,host,port):
        self.host=host
        self.port=port

    def run(self):
        while True:
            cmd=input(‘>>: ‘).strip()
            if not cmd:continue
            if hasattr(self,cmd):
                func=getattr(self,cmd)
                func()
    def get(self):
        print(‘get func‘)

    def put(self):
        print(‘put func‘)
时间: 2024-10-10 21:48:38

Day8 面向对象反射的相关文章

面向对象:反射和双下方法

面向对象:反射和双下方法 1.元类type type:获取对象从属于的类 class A: pass obj = A() print(type(A)) print(type('abc')) print(type([1,2,3])) python中一切皆对象,类在某种意义上也是一个对象,python中自己定义的类,以及大部分内置类都是由type元类(构建类)实例化得来的 type 与 object 的关系 object类是type类的一个实例,object类是type的父类. print(type

面向对象--反射

什么是反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩. python面向对象中的反射:通过字符串的形式操作对象相关的属性.python中的一切事物都是对象(都可以使用反射) 下列方法适用于类和对象(一切皆对象,类本身也是一个对象) 1)hasattr:可以查看前面的元素是否拥有后面的元素,后面

Python之路,Day8 - 面向对象编程进阶

本节内容: 面向对象高级语法部分 经典类vs新式类 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 作业:开发一个支持多用户在线的FTP程序 面向对象高级语法部分 经典类vs新式类 把下面代码用python2 和python3都执行一下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #_*_coding:utf-8_*_ class A:     def __init__(self):

面向对象 反射 特殊方法

发射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩. python面向对象中的反射:通过字符串的形式操作对象相关的属性.python中的一切事物都是对象(都可以使用反射) 四个可以实现自省的函数 下列方法适用于类和对象(一切皆对象,类本身也是一个对象) getattr() hasattr() se

Python之面向对象-反射

一.什么是反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问,检测和修改它本省状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩. python面向对象中的反射:通过字符串的形式操作对象相关的属性.Pythonn中的一切事物都是对象(都可以使用反射) 反射四种方法 一切皆对象,类本身也是一个对象 hasattr def hasattr(*args, **kwarg

面向对象 反射方法

首先看一个例子 #在面向对象中一般情况下怎么去调属性class Student: def __init__(self, name, age): self.name = name self.age = age def run(self): print('=========>') class Teacher(Student): pass stu1 = Student('zhuyu', 19) print(stu1.name) #其本质就是 stu1.__dict__['name'] print(st

Python面向对象反射,双下方法

一. 反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩. python面向对象中的反射:通过字符串的形式操作对象相关的属性.python中的一切事物都是对象(都可以使用反射) 四个可以实现自省的函数 下列方法适用于类和对象(一切皆对象,类本身也是一个对象) 对实例化对象的示例 class Foo

Day8 面向对象(补充)

私有字段 class Foo: def __init__(self, name): self.__name = name def f1(self): print(self.__name) class Bar(Foo): def f2(self): print(self.__name) obj = Foo('alex')#print(obj.name)#只能内部调用obj.f1() obj2 = Bar('aaa')obj2.f1()#私有普通字段只有自己能访问,其余均不行obj2.f2() 静态

【Python学习之路】——Day8(面向对象进阶)

面向对象 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个"函数"供使用(可以讲多函数中公用的变量封装到对象中) 对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函数 面向对象三大特性:封装.继承和多态 介绍Python 类的成员.成员修饰符.类的特殊成员. 类的成员 类的成员可以分为三大类:字段.方法和属性 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存中就有多少个普通字段.而其