-
类的属性的控制 1.设置对象属性 __setattr__(self,name,value) def __setattr__(self,name,value): self.__dict__[name]=value 2.查询对象属性 __getattr__(self,name) 当查询不到时才会调用 __getattribute__(self,name) 每次访问时一定会被调到 3.删除对象属性 __delattr__查看全部
-
类的展现 1.转换为字符串 __str__ __repr__ __unicode__ 2.展现对象属性 __dir__ 可以自定义dir展示想要展示的属性查看全部
-
类和运算符 1.利用魔术方法可以使运算符被Python的标准语法支持 2.比较运算符 __cmp__(self,other) 比较 __eq__(self,other) 处理等于 __lt__(self,other) 小于 __gt__(self,other) 大于 3.数字运算符 __add__(self,other) 加 __sub__(self,other) 减 __mul__(self,other) 乘 __div__(self,other) 除 4.逻辑运算符 __or__(self,other) 或 __and__(self,other) 和查看全部
-
对象的创建和初始化 1. 创建类的对象 def __new__(cls) 平时不需要手动定义,父类会自动完成 2.初始化对象 def __init__(self) 3.回收对象 def __del__()查看全部
-
Magic Method(魔术方法) 方法名的前后有两个下划线 def __init__(self):查看全部
-
类的继承 1.定义类的继承 class DerivedClass(BaseClassName): pass 2.继承的子类 会继承父类的属性和方法 也可以自己定义,覆盖父类的属性和方法 3.用super()调用父类的方法 class A(object): def method(self,arg): pass class B(A): def method(self,arg): super(B,self).method(arg)查看全部
-
定义类的方法 1.函数和方法 函数是直接用函数名调用 方法是类的一部分,需要用实例对象来调用 2.类的方法也是类的属性 可以将类的方法名替换成字符串等类型 3.方法的访问控制与属性控制类似 4.@classmethod修饰器 调用的时候用类名,而不是某个对象 5.@property修饰器修饰方法 像访问属性一样调用方法查看全部
-
定义类的属性 1.直接在类里定义 class Programer(object): sex='male' 会被所有类的对象使用 2.在构造函数里定义 class Programer(object): def __init__(self,name,age): self.name =name self.age = age 3.访问的控制 class Programer(object): def __init__(self,name,age): self.name =name ----->可以公开访问 self._age = age ------>私有属性,还可被对象访问 self.__weight = weight ---->不可被类外访问,可通过实例名._类名__weight访问 4..__dict__#查看对象属性的情况 programer=Programer('Albert',25,80) print programer.__dict__ 打印对象属性发现是{'_age':25,'_Programer__weight':70,'name':'Albert'}查看全部
-
1.定义类 class NewStyle(object): pass 2.构造函数 def __init__(self,...) 3.析构函数 def __del__(self,...) 4.类的两个内建函数 dir() 返回一个对象的属性 type() 获取对象的类型查看全部
-
__new__ 在__init__之前调用查看全部
-
python也有析构函数__del__查看全部
-
基本概念:类、对象、属性、方法、继承、封装、多态查看全部
-
继承:子类从属父类。多重继承:继承不同维度 多态:不同子类继承同一父类调用同一方法,因子类重写而有不同的反应查看全部
-
__str__方法和__init__方法类似,都是一些特殊方法,所以前后都有双下划线,它用来返回对象的字符串表达式。查看全部
-
跟对象属性有关的魔术方法 设置对象属性 __setattr__(self,name,value) #给对象设置属性的时候调用 def __setattr__(self,name,value): setattr(self,name,value) #会无限递归,因为在给 self 设置属性的时候,使用内建方法 setattr() 会调用 __setattr__ ,__setattr__ 里面又调用 setattr() def __setattr__(self,name,value): self.__dict__[name] = value 是正确的 查看对象属性 __getattr__(self,name) # __getattribute__(self,name) #每次访问属性的时候都不会被调用,包括使用__dict__访问属性 他更容易造成无限递归的状况,推荐使用父类调用魔术方法的方法 def __getattribute__(self,name): return super(父类名,self).____getattribute__(name) 删除对象属性: __delattr__(self,name):查看全部
举报
0/150
提交
取消