美文网首页
【第25天】python全栈从入门到放弃

【第25天】python全栈从入门到放弃

作者: 36140820cbfd | 来源:发表于2019-08-18 20:01 被阅读0次

1 关于类的几个概念

代码块
静态属性:类属性(变量) 直接写在类中,全大写

动态属性:方法(函数) self

类方法 :@classmethod cls(不用通过对象实例化就可以调用,且不需要参数传)

 静态方法 :@staticmethod 没有默认参数,和普通函数没什么区别,就是放在类里面

2 property和setter的使用

代码块
class A:

    def __init__(self,name):
        self.name=name

    @property
    def grade(self):
        print(self.name)

    @grade.setter
    def grade(self,newname):
        self.name=newname

a=A('nezha')
a.grade='huluwa'
a.grade

3 isinstance()和issubclass()之间知识

isinstance() 判断对象所属类型,包括继承关系

issubclass() 判断类与类之间的继承关系

代码块
class A:
    pass

class B(A):
    pass

class C:
    pass

b=B()

print(isinstance(b,B))   #True  判断b对象是否属于B
print(isinstance(b,A))    #True  妈的,父类居然也属于,注意了
print(isinstance(b,C))    #False

print(type(b) is B)  #True
print(type(b) is A)  #False
#用type()来判断只能判断最近的一层,用isinstance()不限制

print(issubclass(B,A))   #判断B是否是A类的子类

4 enumerate()枚举的使用

代码块
a=['nezha','jingang','hulu']
for a,b in enumerate(a,1):  #1代表序号从1开始
    print(a,b)

5反射

用字符串数据类型的变量名来访问这个变量的值

反射的方法: getattr hasattr setattr delattr

区别gerattr(),hasattr(),setattr(),delattr()之间的区别

代码块
class Student:
    def __init__(self,name):
        self.name=name

s=Student('wangsiyu')
print(s.name)

#hasattr
print(hasattr(s,'name'))    #True   说明有这个东西
print(getattr(s,'name'))   #wangsiyu  拿到s对象中的name字符串的值
setattr(s,'name','sonofbitch')   #修改s对象的name
print(s.name)    #sonofbitch
delattr(s,'name')
print(s.__dict__)   #没有了name

6通过反射调用方法

代码块
class Student:
    role='student'

    def study(self):
        print('学生要学习')

    def test(self):
        print('学生考试')

a=Student()
cmd=input('请输入学生要做的方法:')
if hasattr(a,cmd):
    getattr(a,cmd)()
else:
    print('没有这方法')

7 模块的反射知识

代码块
import os
os.rename('mytest','hello')  #把mytest文件重命名为hello
func=getattr(os,'rename')
func('hello','mytest')    #通过反射把hello改为mytest
代码块
class Student:
    name='wangsiyu'

    @classmethod
    def func(cls):
        print('hello,world')
        return 'see you again'

def login():
    print('登陆成功')
    return 'bbbb'

import sys
# print(sys.modules)
print(sys.modules['__main__'])   #当前模块

print(sys.modules['__main__'].Student().name)   #wangsiyu
print(sys.modules['__main__'].Student().func())   #hello,world,   返回值是see you again
print(sys.modules['__main__'].login())   #登陆成功,,,返回值bbbb

#用反射
getattr(sys.modules['__main__'],'login')()
getattr(sys.modules['__main__'],'Student')().func()


别跑,点个赞再走

相关文章

网友评论

      本文标题:【第25天】python全栈从入门到放弃

      本文链接:https://www.haomeiwen.com/subject/pthdsctx.html