python 类和对象

类=属性+方法

python 定义类:

创建对象: tt = Turtle()

tt.climb()  tt.bite()

python 是面向对象编程的语言。

面向对象特征:封装,继承,多态。

python 中的 self 相当于C++ 中的this 指针

eg:

a = Ball()    a.setName("AA")  

b = Ball()    b.setName("BB")

a.kick()       b.kick()   

python 对象的构造方法,_init_(self,param1,param1),会在实例化对象时自动调用。

如果定义了_init_()方法,如果有参,那么在创建对象实例时必须传入参数。

共有属性,私有属性。 在属性前加两个下划线变成私有。

共有:

私有:

1)可以通过方法去访问私有属性

2)可以通过p._Person__name访问私有属性,可见python 不是具有完全私有属性的。

类:继承

class 子类(父类):

1.如果子类中存在父类同名方法,子类调用方法会覆盖父类中的方法。

如果子类中重写了构造方法,需要在构造方法中使用super() 方法来调用父类构造方法,才能使用父类中的属性。

多重继承

类:组合

类定义,类对象,实例对象。

优先级:逐渐增高,实例对象的属性 会覆盖类对象的属性 会覆盖类定义的属性。

如果类中属性与方法同名,那么属性会覆盖方法

所以,python 定义类的一些规定:

1.不要试图在一个类里边定义出所有能想到的特性和方法,应该利用继承和组合机制来扩展。

2.用不同的词性命名,如属性名用名词,方法名用动词。

python 绑定:

python 要求方法需要有实例才能被调用,这种限制其实就是python 所谓的绑定概念。

类相关的BIF

issubclass(A,B); A 是否B的子类

isintance(object,classinfo); object是否是class的实例; classinfo可以是一个元组(A类,B类,C类)

  如果第一个参数不是对象,则永远返回false.

hasattr(object,name)  判断对象是否有对应的属性

getattr(object,name[,default])  获取对象对应的属性。

setattr(object,name,value)   给对象某属性赋值。

delattr(object,name) 删除对象的某属性。

property(fget=None,fset=None,fdel=None,doc=None),获取类方法的值,我们可以

python 魔法方法

魔法方法总是被双下划线包围,例如__init__;魔法方法是面向对象的python 的一切。魔法方法体现它们总能够在适当的时候被自动调用。

构造函数__init__(self,...)

当我们继承不可变类型时,又需要进行修改的时候,魔法方法就变得很重要了。

__new__(class,...)

__del__(self)

当没有变量引用某对象时,就会调用python的垃圾回收机制,回收对象时就会调用对象的__del__().

魔法方法:算术运算

python 属性访问魔法方法

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

使用描述符 自定义实现property类

python 定制序列

如果要定义某类型,就需要重写该类型的对应的魔法方法。

例如:编写不可变自定义列表,记录列表中每个元素被访问的次数。

python 迭代器

使用for 循环迭代,for 循环实际就是自动调用迭代方法。

关于迭代的两个BIF

iter(); next();

iter() 对应的魔法方法:__iter__(); __next__()对应的魔法方法 __next__();

python 生成器  使用yield 关键字,生成器实际是特殊的迭代器

所谓的协同程序就是可以运行的独立函数调用,函数可以暂停或者挂起,并在需要的时候从程序离开的地方继续或者重新开始。

python模块

导入模块: 1. import 模块名 2. from 模块名 import 函数名。 3 import 模块名 as  新名字。

第一种以及第三种调用函数 :需使用模块名. 函数名。

需要把包路径 append 到sys.path 中。

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值