面向对象(__item__)】的更多相关文章

一 isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(object): pass obj = Foo() print(isinstance(obj, Foo)) issubclass(sub, super)检查sub类是否是 super 类的派生类 class Foo(object): pass class Bar(Foo): pass print(issubcla…
#Author : Kelvin #Date : 2019/1/20 21:37 class People: def __getitem__(self, item): print("getitem...") return self.__dict__[item] def __setitem__(self, key, value): print("setitem...") self.__dict__[key]=value def __delitem__(self, ke…
浅谈super() super并不是一个函数,是一个类名,形如super(B, self)事实上调用了super类的初始化函数,产生了一个super对象:Python的多继承类是通过mro的方式来保证各个父类的函数被逐一调用,而且保证每个父类函数只调用一次(如果每个类都使用super),并且按照mro序列一次调用.下面是一个小练习: class A: def fun(self): print('in A') class B(A): def fun(self): super().fun() pri…
面向对象进阶 类型判断 issubclass 首先,我们先看issubclass() 这个内置函数可以帮我们判断x类是否是y类型的子类. class Base: pass class Foo(Base): pass class Bar(Foo): pass print(issubclass(Bar, Foo)) # True print(issubclass(Foo, Bar)) # False print(issubclass(Bar, Base)) # True type 然后我们来看typ…
1 类与实例对方法和属性的修改 class Chinese: # 这是一个Chinese的类 #定义一个类属性,又称为静态数据或者静态变量,相当于C#中的static country="China" # 定义一个初始化函数, def __init__(self,name,age,gender): self.name=name self.age=age self.gender=gender #定义一个方法 def play(self,ballName): print('%s 正在打 %s…
__str__ 改变对象的字符串显示.可以理解为使用print函数打印一个对象时,会自动调用对象的__str__方法 class Student: def __init__(self, name, age): self.name = name self.age = age # 定义对象的字符串表示 def __str__(self): return self.name s1 = Student('张三', 24) print(s1) # 会调用s1的__str__方法 __repr__ 在pyt…
面向对象的知识点补充(进阶版) classmethod和staticmethod:这两个函数的用途就是可以不用实例化对象就可以调用方法 class Classmethod_Demo(): role = 'dog' @classmethod def func(cls): print(cls.role) Classmethod_Demo.func() class Staticmethod_Demo(): role = 'dog' @staticmethod def func(): print("当普…
第1章 面向对象特性—继承(补充) 1.1 接口类.抽象类介绍 1.2 接口类 1.3 接口类应用过程 1.3.1 第一版:完成多种支付方式接口 1.3.2 第二版: 归一化设计,统一支付方式 1.3.3 第三版:野生程序员的乱搞 1.3.4 第四版:制定规范,统一方法名 1.3.5 第五版本:强制性制定规定 1.4 抽象类 1.4.1 解释: 1.4.2 为什么要有抽象类 1.4.3 抽象类实际应用理论 1.4.4 抽象类的使用方法 1.5 接口类和抽象类的区别 1.6 继承注意问题 第2章…
目录 面向对象高阶 isinstance issubclass 反射(自省) 模块的使用 放在类的使用 call 面向对象高阶 isinstance 判断是否为实例化对象,以后可以用来取代type 和type的区别: class Foo: pass class Bar(Foo): pass b = Bar() print(isinstance(b, Bar)) # True 未来推荐使用 print(isinstance(b, Foo)) # True 会检测父类 print(type(b) =…
一. 反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩. python面向对象中的反射:通过字符串的形式操作对象相关的属性.python中的一切事物都是对象(都可以使用反射) 四个可以实现自省的函数 下列方法适用于类和对象(一切皆对象,类本身也是一个对象) class Foo:    f = '…