python全栈学习--面向对象进阶2

内置函数

isinstance()    #对象     类
issubclass()    #子类    父类

#反射:使用字符串数据类型的变量名来使用变量

#文件中存储的都是字符串

#网络上能传递的也最接近字符串

#用户输入的

# hash是加速寻址
print(hash('str'))
print(hash('str'))

hash之后的数字,就是内存地址

hash之后,将value存储在对应的内存地址中

 

字典占用的内存相对的比较多

用空间换时间

list 占用的内存比较少,但是没有字典快

 

#示例:在类中,所有对象,默认打印的是内存地址
class List:
    def __init__(self,*args):
        self.l = list(args)
l = List(1,2,3,4,5)
print(l)

 执行输出:

 

 反射:

使用字符串数据的变量名来使用变量

wwwh 即 what,where,why,how 这4点是一种学习方法

反射:

使用字符串数据类型的变量名来使用变量

1.文件中存储的都是字符串

2.网络上能传递的也最接近字符串

3.用户输入的也是字符串

上面3种情况都是字符串,如果这有这种情况的,需要操作类或者模块时,就需要用到反射

 

有4种应用

类调用静态属性

对象调用属性模块中的名字

调用自己模块中的名字

a = 1
import sys

b = getattr(sys.modules['__main__'], 'a')
print(b)  # 输出变量a的值,即1

def func(): print('11')

c = getattr(sys.modules['__main__'], 'func')
print(c)  # 输出func的内存地址
getattr(sys.modules['__main__'], 'func')()  # 执行方法,输出11main__'],'func')()

 

 

Teacher 类 wahaha方法的连续反射

import sys
class Teacher():
    def wahaha(self):print('wa')
alex = getattr(sys.modules['__main__'],'Teacher')() #获取当前模块的Teacher,并执行
print(alex)   #Teacher类的内存地址
getattr(alex,'wahaha')()#执行方法wahaha

执行后输出:

 

反射静态方法:

import sys
class Teacher(object):
    @staticmethod
    def wahaha():print('wa')
Teacher = getattr(sys.modules['__main__'],'Teacher')  #获取当前模块的Teacher类
getattr(Teacher,'wahaha')()    #执行类方法,注意加括号

  

找对象import sys

class Teacher(object):
   # def wahaha(self):print('wa') @staticmethod def qqxing():print('qq') alex = Teacher() b = getattr(sys.modules['__main__'],'alex') print(b)

  

 

class Student:
    def cls001(self):print('班级一')
    @staticmethod
    def cls002():print('班级二')
#1.通过类调用静态属性
if hasattr(Student,'cls001'): #判断Student方法在中cls01是否存在
    print(getattr(Student,'cls001'))
a = Student
Student.cls002()

 

 

 

 

 

  

  

转载于:https://www.cnblogs.com/haowen980/p/8884812.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值