喜得尔试管新一代助孕

喜得尔试管新一代助孕█微信 号█:138★0226★9370█代孕代怀孕 ████ █助孕包成功█ ★█100%包男孩█ ★█

31.定义一个类:  class class_name:      创建对象: 对象名 = class_name()  继承:   class class_name2(parent_classname):

             属性、方法                                  pass #空语句用来维持代码结构

32.python的self关键字相当于java的this,使用:将self作为方法的第一个参数

__init__(self,参数1,2,3,...):相当于构造方法,使用:

私有:在python中定义私有变量只需要在变量或函数名前加“__”两个下划线,那么这个函数或变量就为私有的

由于name为私有,故直接访问是不允许的,但python的私有是伪私有,可以用:对象名._类名__属性来访问,eg: p._Peason__name --> '小甲鱼'

super([指定父类名可有可无])函数:用来调用父类的方法,使用eg:super().__init__(self) #调用父类的构造方法

python支持多继承,语法:class child_class_name(parent1,parent2,...) #尽量别用,容易乱

组合:

注意:如果类的属性和方法名相同,属性会覆盖方法

在创建类的时候,不要试图在一个类里面定义出所有能想到的特性和方法,应该利用继承和组合机制来进行扩展;

用不同的词性来命名,如属性名用名词,方法名用动词

 32.绑定:python严格要求方法需要有实例才能被调用;由于对象调用自己的绑定方法,会自动将对象当作第一个参数传递进去,所以,当类中方法没有带参数时,而又给它传递了一个,显然是会报错的。反之,直接用类来调用方法时,则不会将自己作为参数传递进去,当方法有self参数时(self参数必须放在第一个参数位),用类名调用方法则会报错

==>   

类中定义的属性和方法是静态的,当程序结束才会被释放,所以在大多数情况下应该考虑用self属性,def set属性(sefl,cs1,cs2...):   self.sx1 = cs1  self.sx2 = cs2  

 类属性通常用来跟踪与类相关的值

33.一些相关的BIF:

issubclass(class,classinfo):用来判断classinfo是否为class的子类,classinfo可以是由类对象组成的元组,只要class与其中任何一个候选类的子类,则返回true

isinstance(object,classinfo):用来判断对象是否为classinfo的实例对象,如果第一个参数不是object对象类型,它就只返回false,如果第二个参数不是类或类对象组成的元组,会抛出一个TypeError异常

hasattr(object,'属性'):用来判断对象中是否有string这个属性(用字符串表示)

getattr(object,'属性',[提示语]):用来获取对象存在的属性

setattr(object,'属性',value):用来给属性赋值

delattr(object,'属性'):用来删除对象中指定的属性(非删除类的属性),如果属性不存在则抛出AttributeError异常

 property(fget = None,fset = None, fdel = None,doc = None):用属性设置属性,参数分别为获取属性方法、设置属性方法、删除属性方法

==>==>

34.魔法方法 :__xxx__,能够在适当的时候被自动调用

 __new__(class,参数1234..):创建对象第一个执行的魔法方法

 

 __init__(self)的返回值一定是None,若试图让__init__有返回值则会报错

__del__(self):垃圾回收机制会调用的方法,当类的对象生成以后,所有对象的引用被del消除后才调用__del__方法

35. 控制属性访问的魔法方法(系统和用户在赋值、删除和获取的时候系统会自动调用这些方法)

__getattr__(self,name)  -定义当用户试图获取一个不存在的属性时的行为 

__getattribute__(self,name) -定义当该类的属性被访问时的行为,比__getattr__先

__setattr__(self,name,value) -定义当一个属性被设置时的行为

__delattr__(self,name) -定义当一个属性被删除时的行为

36.描述符:将某种特殊的类型的类的实例指派给另一个类的属性

 特殊类型:要实现一下三个方法其中一个-->

__get__(self,instance,owner) -用于访问属性,它返回属性的值

__set__(self,instance,value) -将在属性分配操作中调用,不返回任何内容

__delete__(self,instance) -控制删除操作,不返回任何内容

对于Test类,MyDecriptor类就是Test的描述符类

37.容器类型的协议:

如果希望定制的容器是不可变的话,只需要定义__len__()和__getitem__()方法

如果希望定制的容器是可变的的,除了__len__()和__getitem__()方法,还需要定义__setitem__()和__delitem()两个方法

38.迭代器两个BIF,iter()--对应的魔法方法->__iter__()返回迭代器本身、next()---->__next__()-->决定了迭代器的规则

当没有元素时就会抛出一个StopIteration的异常

猜你喜欢

转载自www.cnblogs.com/jingyinbaobei01/p/10566737.html