day23_7.29 多态和类的内置方法】的更多相关文章

一.多态 在现实生活中,多态也会体现.如对于水这种物质,有固态:冰,液态:常态,气态:水蒸气, 在程序中,其官方定义是:多个不同对象可以相应同一方法,产生不同的结果. 而在python中,多态不是一个特殊的语法,而是一种关系,一种特性,举例: class A: def work(self): print('I am working in A') def name(self): print('i am A') class B: def work(self): print('I am working…
面向对象进阶博客地址链接: http://www.cnblogs.com/Eva-J/articles/7351812.html 复习昨日内容: # 包 # 开发规范 # # hashlib # 登录验证 密文密码检测 # 密文存储 # 加盐 # 动态加盐 # 检测文件一致性 md5 #MD5.update() # configparser : 配置文件相关 #网络编程 ftp #[section1] #o1 = yes # logging : 日志 #记录一些信息和结果 #打日志 #日志就和p…
一. 反射 ''' # isinstance class A:pass class B(A):pass a = A() print(isinstance(a,A)) # 判断对象和类的关系 print(issubclass(B,A)) # 判断子类和父类的关系 print(issubclass(A,B)) ''' #--------------------------------------------------------------------------------# # # 反射:是用…
类的内置方法 它与内置函数有紧密的联系,有的内置函数就是调用的内置方法. 在顶级父类obj中有: 两个双下方法 obj.__str__ str(obj) obj.__repr__ repr(obj) 1.__str__ 与 __repr__ class Teacher: def __init__(self, name, salary): self.name = name self.salary = salary def __str__(self): return "Teacher's objec…
类的内置方法(魔法方法): 凡是在类内部定义,以__开头__结尾的方法,都是类的内置方法,也称之为魔法方法. 类的内置方法,会在某种条件满足下自动触发. 内置方法如下: __new__: 在__init__触发前,自动触发. 调用该类时,内部会通过__new__产生一个新的对象. __init__: 在调用类时自动触发. 通过产生的对象自动调用__init__() class Demo(object): # 条件: __new__: 在__init__触发前,自动触发. def __new__(…
反射 反射是通过'字符串'对 对象的属性进行操作,反射有四个内置的方法. hasattr 通过字符串 判断对象的属性或者方法是否存在 getattr 通过字符串  获取对象的属性或者方法               getattr (  ref  ,   'z'  ,    '没有值')  可以设置返回值,防止报错 setattr 通过字符串   设置对象的属性或者方法 delattr 通过字符串  删除对象的属性或者方法 # _*_ coding: gbk _*_ # @Author: Won…
isinstance 和  issubclass isinstance(obj,b)  检查是否obj是否是类b的对象 class A(object):pass class B(A):pass b=B() print(isinstance(b,B)) #如果b是B的对象 就返回True,反之False print(isinstance(b,A)) #如果b是A的对象 就返回True,反之False issubclass(A,B)  检测B是否继承A class A(object):pass cl…
一. object类内置方法__str__和函数str 类的内置方法__str__和内置函数str实际上实现的是同一功能,实际上str调用的就是__str__方法,只是调用方式不同,二者的调用语法如下: 实例对象. str() str(对象) 返回值为一个字符串对象,该字符串对象类似一种非正式的字符串表示,为什么说是" 非正式"呢,这是因为Python对这个返回值没有特殊要求,只要求是对用户信息好理解. 此方法因此通常被用于与最终用户交互时的显示信息,str 的意义是得到便于人们阅读的…
当我们在交互环境下输入对象时会直接显示对象的信息,交互环境下输入print(对象)或代码中print(对象)也会输出对象的信息,这些输出信息与两个内置方法:__str__方法和__repr__方法有关,这两个方法Python中的所有类型(新式类)的基类object中实现了这个通用的功能,本节详细分析__repr__方法. 一. object类内置方法__repr__和函数repr 类的内置方法__repr__和内置函数repr实际上实现的是同一功能,实际上repr调用的就是__repr__方法,…
''' 1什么是多态 多态指的是同一种/类事物的不同形态 2 为何要有多态 多态性:在多态的背景下,可以在不用考虑对象具体类型的前提下而直接使用对象 多态性的精髓:统一 多态性的好处: 1增加了程序的灵活性: 以不变应万变,不论对象千变万化,使用者都是同一种形式去调用 2增加了程序可扩展性 继承一个Animal类创建一个新的类,使用者无需更改自己的代码,还是用原来的方式调用 3 如何用多态 ''' ''' class Animal: def speak(self): pass class Peo…
#!/usr/bin/env python # -*- coding:utf-8 -*- # 作者:Presley # 邮箱:1209989516@qq.com # 时间:2018-11-04 # python内置方法 class A: n = "A" def f2(self): print("from A") class B(A): n = "B" def f1(self): print("from B") # def f2…
# class 内置方法: # __setitem__ # __getitem__ # __delitem__ class Test(): X = 100 def __getitem__(self, item): print("getitem") def __setitem__(self, key, value): print("setitem") def __delitem__(self, key): print("delitem") xx =…
反射 后边有关字符串的# class Management:# role = '管理员'# def __init__(self,name,sex,phone,mail):# self.name = name# self.sex = sex# self.phone = phone# self.mail = mail# def creat_class(self):# print('创建了一个班级')# def creat_teacher(self):# print('新建了一条讲师信息')# def…
1.def __add__(self,other): c1+c2 两个实例的加法操作就是执行__add__()方法 2.__str__(self): print一个实例的时候,执行的是__str__()这个内置方法 eg: class Vector(object):      def __init__(self,a,b):          self.a = a          self.b = b      def __str__(self):          return 'Vector…
1.hasattr  getaddr  setaddr delattr 这四个函数同样也适用于类 class BlackMedium: feture="Ugly" def __init__(self,name,addr): self.name=name self.addr=addr def sell_house(self): print("%s 正在卖房子,傻逼才买呢" %self.name) def rent_house(self): print("%s…
# 内置的类方法 和 内置的函数之间有着千丝万缕的联系# 双下方法# obj.__str__ str(obj)# obj.__repr__ repr(obj) # def __str__(self):# return "Teacher's object" def func(self): return "不打印我" # a=Teacher()# print(str(a)) 在这里如果注释def __str__(self),a=Teacher,print(str(Tea…
判断是不是类cls的对象 class A: pass a = A() print(isinstance(a,A)) 判断类sub是不是super的子类 class A: pass class B(A): pass print(issubclass(B,A)) __str__ #调用str(obj)其实内部就是在调用__str__ #obect内置有一个__str__,调用时,返回调用该方法的对象的内存地址 class A: def __str__(self): return 'This is c…
#isinstance(obj,cls)判断obj是否是类cls的实例 #issubclass(cls,cls1)判断cls是否是cls1的子类或派生类 class Foo: pass class Bar(Foo): pass print(issubclass(Bar,Foo))#检查sub类是否是super类的派生类 f1=Foo() print(isinstance(f1,Foo))#检查是否obj是否是类cls对象 #自定义格式化的format方法 x='{0}{0}{0}'.format…
__str__和__repr__ 改变对象的字符串显示__str__,__repr__ 我们先定义一个Student类,打印一个实例: class Student(object): def __init__(self,name): self.name = name print(Student('libai')) 打印出一堆<__main__.Student object at 0x000002311102EE10>,不好看. 怎么才能打印得好看呢?只需要定义好__str__()方法,返回一个好…
1,__init__(self) 初始化方法,实例化一个对象的时候就会被执行 2,__call__(self,*args) 把实例对象作为函数调用,即实例化一个对象后,在对象后面加括号即可调用__call__方法. 3.__str__() 在打印实例的时候就会被调用 4,__del__ 析构函数,该函数主要用于扫尾工作,一般关闭数据连接或者是关闭文件. 5,__new__      该函数会__init__()之前调用,用于生成实例对象.利用这个方法或类属性的特性可以实现设计模式中的单例单模式.…
public class A//先定义A类 { } public static class Extension//必须先声明一个静态类,类名随意 { public static int ToInt32(this string In)//扩建的方法必须是静态方法,参数里面必须含有this关键字,this关键字后面的类型 { return Convert.ToInt32(In); } //为A新增一个ExtensionMethod方法 public static string ExtensionMe…
二十六. Python基础(26)--类的内置特殊属性和方法 ● 知识框架 ● 类的内置方法/魔法方法案例1: 单例设计模式 # 类的魔法方法 # 案例1: 单例设计模式 class Teacher:             #创建一个老师类     __isinstance = None     #创建一个私有静态变量, 准备用来指向一个裸着的对象     def __new__(cls, *args, **kwargs): #创建一个裸着的对象         if not cls.__is…
类的内置方法(魔法方法): 凡是在类内部定义,以__开头__结尾的方法,都是类的内置方法,类的内置方法,会在满足某种条件下自动触发. 1.1__new__ __new__:在___init__触发前,自动触发.调用该类时,内部会通过__new__产生一个新对象 __init__:在调用类时自动触发.通过产生的对象自动调用__init__() class Demo(object): # 条件: __new__: 在__init__触发前,自动触发. def __new__(cls,*args,**…
很多pythonic的代码都会用到内置方法,根据自己的经验,罗列一下自己知道的内置方法. __getitem__ __setitem__ __delitem__ 这三个方法是字典类的内置方法,分别对应于查找.设置.删除操作,以一个简单的例子说明: class A(dict): def __getitem__(self, key): print '__getitem__' return super(A, self).__getitem__(key) def __setitem__(self, ke…
一.反射:用字符串数据类型的变量名来访问这个变量的值 上代码^_^ # class Student: # ROLE = 'STUDENT' # @classmethod # def check_course(cls): # print('查看课程了') # # @staticmethod # def login(): # print('登录') # # 反射查看属性# # print(Student.ROLE)#普通方法# # print(getattr(Student,'ROLE'))## #…
铁乐学python_day24_面向对象进阶1_内置方法 题外话1: 学习方法[wwwh] what where why how 是什么,用在哪里,为什么,怎么用 学习到一个新知识点的时候,多问问上面的四个问题,并了解和实践透彻. 什么是反射? 先不说枯燥的概念,你可以自己总结出来,对于python中的反射,什么时候会用到? 需要使用字符串数据类型的变量名来使用变量的时候用到反射. (通过字符串的形式操作对象相关的属性和方法.) 关键词:字符串 使用到字符串的场景多在: 1)文件中存储的是字符串…
一.常用方法集合 1.1.string,字符串常用方法 以下举例是python2.7测试: 函数名称 作用 举例 str.capitalize() 字符串第一个字符如果是字母,则把字母替换为大写字母.然后返回新的字符串 >>> l = 'abc cba' >>> l.capitalize() 'Abc cba' >>> l.capitalize() '2b 3c' str.center() 字符串设置为指定字符宽度,并居中.默认是用空格填充前后空白字符…
反射 反射用到的mmp模块 def wahaha():print('wahaha') class QQxing: def __init__(self,name): self.name = name def ADCa(self): print('in ADCa',self.name) # a # b # wahaha # QQxing # getattr('a') import sys print(sys.modules) print(sys.modules[__name__]) print(ge…
实现纸牌游戏的随机抽牌洗牌过程(item系列几个内置方法的实例) 1.namedtuple:命名元组,可以创建一个没有方法只有属性的类 from collections import namedtuple card = namedtuple('card',['rank','suit']) # rank 牌面大小,suit牌面的花色 # card其实就是namedtuple创建的一个类,其属性就是rank和suit c1 = card(,'红心 ') # c1是实例化的对象 print(c1) p…
eval与exec内置方法 将字符串作为执行目标,得到响应结果 eval常用作类型转换:该函数执行完有返回值 exec拥有执行更复杂的字符串:可以形成名称空间 eval内置函数的使用场景:   1.执行字符串会得到相应的执行结果   2.一般用于类型转化,得到dict.list.tuple等 dic_str = "{'a': 1, 'b': 2, 'c': 3}" print(eval(dic_str)) list_str = "[1, 2, 3, 4, 5]" p…