1、面向对象内置函数 2、反射 3、内置方法

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

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

  class A:pass

  class B(A): pass

  print(isinstance(b,B))   # o,t

  print(isinstance(b,A))  #  o,t

  

  class mystr(str): pass

  ms = mystr("alex")

  print(type(ms) is str)  # 不包含继承关系,只管一层

  print(isinstance("alex",str))  # 包含所有的继承关系

  

  class A: pass

  class B(A) : pass

   print(issubclass(B,A))

  print(issubclass(A,B))

  

3、反射

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

  反射的方法:getattar,用于返回一个对象属性值      (类、静态属性、类方法、静态方法)命名空间.XXX == getattr(命名空间,“XXX”)

        hasattr,函数用于判断是否包含对应的属性

        setattr,用于设置属性值,该属性必须存在

        delattr,函数用于删除属性      

  

getattr(os,"rename")("init","__init__.py")  # == os.rename

反射自己模块中的内容, 找到自己当前文件所在的命名空间

def a():

  print("A")

def b():
  print("B")

import  sys  # 是一个模块,这个模块里的所有的方法都是和Python解释器相关的

# import  相当于导入了一个模块

sys.modules  # 这个方法,表示所有在当前这个Python程序中导入的模块

my_file = sys.modules["__main__"]

getattr(my_file,"a")()

getattr(my_file,"b")()

反射

类名.名字

  getattr(类名,“名字”)

对象名.名字

  getattr(对象名,“名字”)

模块名.名字

  import  模块

  getattr(模块,“名字”)

自己文件.名字

  import  sys

  getattr(sys.modules["__main__"],"名字‘)

4、__名字__   # 例如:__init__  初始化方法

  类中的特殊方法、内置方法

  双下方法

  魔术方法

  类中的每个双下方法都有它自己的特殊意义

  __call__  相当于   对象()

  __len__   len(obj)

  __new__  特别重要    开辟内存空间的,类的构造方法    # 写一个单例类

  __str__  , str(obj) ,  "%s" % obj   ,  print(obj)

  所有的双下方法, 没有  需要你在外部直接调用的   而是总有一些其他的,内置函数,特殊的语法来自动触发这些双下方法

  

  

  __new__  # 构造方法

  __init__  # 初识方法

  class Single:

    def __new__(cls, *args, **kwargs):

      print("在new方法里")

      obj = object.__new__(cls)

      print("在new方法里",obj)

      return obj

    def __init__(self):

      print("在init方法里",self)

  obj = Single()

  single的new,single没有,只能调用object的new方法

  new方法在什么时候执行??

      在实例化之后,__init__之前先执行new来创建一块空间

5、单例

  如果一个类,从到尾只能有一个实例,说明从头到尾之开辟了一块属于对象的空间, 那么这个类就是一个单例类

  单例类

  class Single:

    __ISINSTANCE = None

    def __new__(cls,*args,**kwargs):

      if not cls.__ISINSTANCE:

        cls.__ISINSTANCE = object.__new__(cls)

      return cls.__ISINSTANCE

    def __init__(self,name,age):

      self.name = name

      self.age = age 

  s1 = Single("guo", 22)

  s2 = Single("wang",24)

  print(s1.name)

  print(s2.name)

  print(s1,s2)

  

  

  

  

   

原文地址:https://www.cnblogs.com/wjs521/p/9393280.html

时间: 2024-11-08 02:56:40

1、面向对象内置函数 2、反射 3、内置方法的相关文章

第二十五章 面向对象------封装、内置函数、反射、动态导入

1.封装 什么是封装? 1.对外部隐藏内部的属性,以及实现细节,给外部提供使用的接口 注意:封装有隐藏的意思,但不是单纯的隐藏 学习封装的目的:就是为了能够限制外界对内部数据的访问 python中属性的权限分为两种: 1.公开的 没有任何限制,谁都可以访问 2.私有的 只有当前类本身能狗访问 默认为公共的 为什么要封装? 1.提高安全性 封装属性 2.隔离复杂度 封装方法 一个类中分为两种数据:属性和方法 封装属性 class Student: def __init__(self,name,ag

类的相关内置函数及反射

类变量的内存位置相关练习 1.1 class StarkConfig(object): list_display = [] def get_list_display(self): self.list_display.insert(0,33) return self.list_display class RoleConfig(StarkConfig): list_display = [11,22] s1 = StarkConfig() result1 = s1.get_list_display()

Python基础第十一天——内置函数的补充、内置函数与lambda、递归

一.拾遗 1.生成器表达式形式的多个函数之间的协同工作. 例:做一包子吃一个包子 优点:更省内存. 以上例子的原理: 重点★★★★★ 源代码: import time import random # 装饰器 def init(func): '''生成器表达式的初始化''' def wrapper(*args,**kwargs): g=func(*args,**kwargs) next(g) return g return wrapper def cook(people,count): '''定义

python进阶之内置函数和语法糖触发魔法方法

前言 前面已经总结了关键字.运算符与魔法方法的对应关系,下面总结python内置函数对应的魔法方法. 魔法方法 数学计算 abs(args):返回绝对值,调用__abs__; round(args):返回四舍五入的值,调用__round__; math.floor():向下取整,调用__floor__; math.ceil():向上取整,调用__ceil__; math.trunc():求一个值距离0最近的整数,调用__trunc__; divmod(a,b):返回商和余,调用__divmod_

【Python】【基础知识】【内置函数】【help的使用方法】

原英文帮助文档: help([object]) Invoke the built-in help system. (This function is intended for interactive use.) If no argument is given, the interactive help system starts on the interpreter console. If the argument is a string, then the string is looked u

【Python】【基础知识】【内置函数】【dir的使用方法】

原英文帮助文档: dir([object]) Without arguments, return the list of names in the current local scope. With an argument, attempt to return a list of valid attributes for that object. If the object has a method named __dir__(), this method will be called and

【Python】【基础知识】【内置函数】【int的使用方法】

原英文帮助文档: class int([x])class int(x, base=10) Return an integer object constructed from a number or string x, or return 0 if no arguments are given. If x defines __int__(), int(x) returns x.__int__(). If x defines __trunc__(), it returns x.__trunc__()

绑定与非绑定方法及反射,isinstance和issubclass内置函数

目录 绑定方法与非绑定方法 1.绑定方法 2.非绑定方法(staticmethod) isinstance和issubclass 内置函数 1.isinstance 2.issubclass 反射 反射定义 4个可以实现反省的函数(内置函数) 反射使用场景 绑定方法与非绑定方法 1.绑定方法 ? 绑定方法:绑定给谁就应该由谁来调用,谁来调用就会将谁当做第一个参数传入 ? ? 绑定给对象的方法: ? 类中定义的函数默认就是绑定给对象的 ? 绑定给类的方法: ? 为类中定义的函数加上一个装饰器cla

六. python面向对象(内置函数)

一. 内置函数 [email protected] property 内置装饰器函数 只在面向对象中使用 函数的作用是在新式类中返回属性值. from math import pi print(pi) class Circle: def __init__(self,r): self.r=r def per(self): # 周长 return 2*pi*self.r def aer(self): # 面积 return self.r**2*pi aa=Circle(3) print(aa.per

DAY13 内置函数

内置函数 内置函数就是python提供给我们的函数,可以随时拿来使用.截止到python3.6.2,一共有68种内置函数.按照功能,可以分为以下几类: 作用域相关的:2种.  迭代器/生成器相关的:3种.   基础数据类型相关的:38种.  反射相关:4种.  面向对象相关的:9种.  其他:12种. 作用域相关 globals():以字典的形式返回当前位置的所有全局变量. name = 'he' print(globals()) >>> {'__name__': '__main__',