反射和类内置方法

# class Teacher:
#     dic = {‘查看学生信息‘: ‘show_student‘, ‘查看老师‘: ‘show_teacher‘}
#
#     def show_student(self):
#         print(‘show student‘)
#
#     def show_teacher(self):
#         print(‘show teacher‘)
#
#     @classmethod
#     def func(cls):
#         print(‘func‘)
#
# chen = Teacher()
# key = input(‘input:‘)
# if hasattr(chen, Teacher.dic[key]):
#     func = getattr(chen, Teacher.dic[key])
#     print(func)

# class A:
#     name = ‘1‘
#
#     def func(self):
#         print(‘aaaaaa‘)
#
# a = A()
# if hasattr(a, ‘name‘):
#     ret1 = getattr(a, ‘name‘)
#     ret2 = getattr(a, ‘func‘)
#     print(ret1)
#     ret2()

class A:
    pass
    def __str__(self):
        return ‘>>str‘

    def __repr__(self):
        return ‘repr‘

# %s print()和str(obj)都是调用__str__
# repr(obj)和%r都是调用__repr__
# 如果本类无__str__, 就实现__repr__, repr是str的备胎,但str不能做repr的备胎

a = A()
print(a)    # 打印对象就是调用__str__方法,如果本类无实现str方法,会调用object的__str__(内存地址)
print(‘%s‘ %a)
print(str(a))

print(repr(a))
print(‘%r‘%a)

# class A:
#     def __init__(self, name):
#         self.name = name
#
#     def __call__(self):
#         print(self.__dict__)
#
# a = A(‘chen‘)()

原文地址:https://www.cnblogs.com/hhsh/p/9652655.html

时间: 2024-10-14 01:38:31

反射和类内置方法的相关文章

反射、自定义内置方法来定制类的功能、元类

一.反射 1. 定义:通过字符串来操作类或者对象属性 2. 方法:hasattr.getattr.setattr.delattr 3. 使用方法: 1 class People: 2 def __init__(self,name): 3 self.name=name 4 def put(self): 5 print('%s is putting'%self.name) 6 def get(self): 7 print('%s get sth'%self.name) 8 def run(self)

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(isin

01类内置方法

# 写一个单例类# __名子__ # 类中的特殊方法.内置方法 # 双下方法 # 魔法方法 # __call__ flask# __new__ 特别重要 写一个单例类# __len__# __str__ /__repr__ __call__ # __call__ flask class A: def __call__(self, *args, **kwargs): print("执行__call__方法") # # a = A() # a() # 对象加()执行call方法 # A()

python类内置方法的再学习

对于__setitem__和__getitem__方法:其入参看来是固定的(__getitem__(self, item),__setitem__(self, key, value)),我们并不需要重载实现,另外:类变量看来可以被实例化对象直接使用 class wenwa: myname = "陈培昌" myinfo={'name':'陈培昌',"age":22,"favorite":'喜欢练搏击,跳舞'} def sniff(self): pr

python 字符串内置方法整理

编码相关内置方法: (1)    str.encode(encoding='utf-8'):返回字符串编码,encoding指定编码方式. >>> a = 'I love Python' >>> a.encode(encoding='utf-8') b'I love Python' >>> a.encode(encoding='gbk') b'I love Python' >>> b.encode(encoding='utf-8')

面向对象之反射及内置方法

一.静态方法(staticmethod)和类方法(classmethod) 类方法:有个默认参数cls,并且可以直接用类名去调用,可以与类属性交互(也就是可以使用类属性) 静态方法:让类里的方法直接被类调用,就像正常调用函数一样 类方法和静态方法的相同点:都可以直接被类调用,不需要实例化 类方法和静态方法的不同点: 类方法必须有一个cls参数表示这个类,可以使用类属性 静态方法不需要参数 绑定方法:分为普通方法和类方法 普通方法:默认有一个self对象传进来,并且只能被对象调用-------绑定

day27 反射、内置方法

一.isinstance和issubclass class Foo: pass class Son(Foo): pass s = Son() #判断一个对象是不是这个类的对象,传两个参数(对象,类) # print(isinstance(s,Son)) # print(isinstance(s,Foo)) # print(type(s) is Son) # print(type(s) is Foo) #判断一个类是不是另一类的子类,传两个参数(子类,父类) print(issubclass(So

面向对象的进阶---反射--一些内置方法

反射 反射和一些类的内置方法 1 isinstance ---- issubclass type()--判断 是不是 ininstance(object,cls) 判断 是不是类的对象 如果这个类有父类 这个对象也是这个父类的对象 issubclaaa(cls,cls) 判断一个类是不是另一个类的子类 ============================= 反射 ================================= 把一个字符串 类型的变量 变成一个 真实存在这个程序中的变量名

python全栈开发【第十七篇】面向对象反射和内置方法

一.静态方法(staticmethod)和类方法(classmethod) 类方法:有个默认参数cls,并且可以直接用类名去调用,可以与类属性交互(也就是可以使用类属性) 静态方法:让类里的方法直接被类调用,就像正常调用函数一样 类方法和静态方法的相同点:都可以直接被类调用,不需要实例化 类方法和静态方法的不同点: 类方法必须有一个cls参数表示这个类,可以使用类属性 静态方法不需要参数 绑定方法:分为普通方法和类方法 普通方法:默认有一个self对象传进来,并且只能被对象调用-------绑定