python面向对象-类

1.概念

python中的所有东西都是类,如:字符串类,整形类,它们都有自己的属性和方法
属性:类里面的特性  不加()
方法:类里面的函数  要加()

类的实质是一种数据类型,类似于int、str等基本类型,不同的是它是一种复杂的数据类型。
因为它的本质是类型,而不是数据,所以不存在于内存中,不能被直接操作,只有被实例化为对象时,才会变得可操作。
类是对现实生活中一类具有共同特征的事物的抽象。

2.类的定义

基本形式:
class ClassName(object):
    Statement
1.class 定义类的关键字
2.ClassName 类名,类名的每个单词的首字母大写(驼峰规则)。
3.object 是父类名,object 是一切类的基类。在python3中如果继承类是基类可以省略不写。

方法的参数中第一个参数我们约定俗成的为 self 参数名,
self 代表的是在类实例化后这个实例对象本身。

初始化函数除了有 self 这个参数表示实例对象本身之外,
其他的参数的定义也遵循函数的必备参数和默认参数一样的原则,
必备参数就是在实例化是一定要传入的参数,
默认参数就是在定义时可以给这个参数一个初始值。

3.类的实例化

基本形式:实例对象名 = 类名(参数)

在实例化的过程中,self代表的就是这个实例对象自己。

实例化时会把类名后面接的参数传进去赋值给实例,
这样传进去的参数就成为了这个实例对象的属性。

实例化的过程遵循函数调用的原则。
在实例化时也必须个数和顺序与定义时相同(使用关键字参数可以改变传参的顺序)。
当初始化函数定义时使用了默认参数时,在实例化时默认参数可以不传参,
这时这个实例对象就会使用默认的属性,如果传了参数进去则会改变这参数值,
实例化对象的属性就为你传进来的这个参数。

isinstance(实例名,类名)
判断一个实例是不是这个类的实例。

4.类和实例的属性

类属性
    .类属性是可以直接通过“类名.属性名”来访问和修改。
    .类属性是这个类的所有实例对象所共有的属性,
    任意一个实例对象都可以访问并修改这个属性(私有隐藏除外)。
    .对类属性的修改,遵循基本数据类型的特性:列表可以直接修改,字符串不可以,
    所以当类属性是一个列表时,可通过任意一个实例对象对其进行修改。
    但字符串类型的类属性不能通过实例对象对其进行修改。
    当实例对不可变对象进行修改之后,会查找实例的类属性,不会查找类的属性,同时类的属性不会变。

实例属性
    .在属性前面加了 self 标识的属性为实例的属性。
    .在定义的时候用的 self 加属性名字的形式,在查看实例的属性时
    就是通过实例的名称+‘.’+属性名来访问实例属性。

方法属性
    .定义属性方法的内容是函数,函数的第一个参数是 self,代表实例本身。

一些说明:
    .数据属性会覆盖同名的方法属性。减少冲突,可以方法使用动词,数据属性使用名词。
    .数据属性可以被方法引用。
    .一般,方法第一个参数被命名为 self,这仅仅是一个约定,
    self 没有特殊含义,程序员遵循这个约定。
    .查看类中的属性和实例属性可以调用 __dict__ 方法返回属性组成的字典。
    .Python 中属性的获取是按照从下到上的顺序来查找属性
    .Python 中的类和实例是两个完全独立的对象
    .Python 中的属性设置是针对对象本身进行的

5.类的私有变量

声明:在属性变量名前加上双下划线定义属性为私有属性
特性:在Python中就算继承也不能相互访问私有变量,或者父类访问子类的私有属性也不可以

在Python中,通过单下划线”_”来实现模块级别的私有化,一般约定以单下划线”_”开头的变量、函数为模块私有的,
也就是说”from moduleName import *”将不会引入以单下划线”_”开头的变量、函数

对于Python中的类属性,可以通过双下划线”__”来实现一定程度的私有化,因为双下划线开头的属性在运行时会被”混淆”(mangling)。

_”和” __”的使用 更多的是一种规范/约定,没有真正达到限制的目的

“_”:以单下划线开头只能允许其本身与子类进行访问
“__”:双下划线的表示的是私有类型的变量。这类属性在运行时属性名会加上单下划线和类名。

6.数据封装

在类里面数据属性和行为用函数的形式封装起来,
访问时直接调用,不需知道类里面具体的实现方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值