python基础系列:
python自学篇一[ Anaconda3安装 ]
python自学篇二[ pycharm安装及使用 ]
python自学篇三[ 判断语句if的使用 ]
python自学篇四[ 基本数据类型和字符串常用处理 ]
python自学篇五[ 列表 ]
python自学篇六[ 元组 ]
python自学篇七[ 字典+深拷贝与浅拷贝 ]描述
python自学篇八[ 循环:while+for+pass+range()+推导式 ]
python自学篇九[ 函数(一):参数+对象 ]
python自学篇九[ 函数(二):返回值return+yield+迭代器+生成器 ]
python自学篇九[ 函数(三):变量作用域+ATM+5个小练习 ]
python自学篇九[ 函数(四):递归函数+匿名函数+内置函数+高阶函数 ]
python自学篇十[ 面向对象 (一) :面向对象概念+定义类+练习一]
python自学篇十[ 面向对象 (二) :继承+多继承+类属性+实例属性]
python自学篇十[ 面向对象 (三) :访问限制+类方法+静态方法]
python自学篇十[ 面向对象 (四) :王者荣耀小游戏+模拟一个简单的银行进行业务办理的类]
python自学篇十一[ 模块简介+模块制作+dir()函数+标准模块+包]
python自学篇十二[ 文件:打开+读取+写入+3个习题]
1.面向对象
- 面向对象:对函数进行分类和封装,让开发“更快更好更强…”
- 面向过程:根据业务逻辑从上到下垒代码
函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
面向对象不像面向过程那样按照功能划分模块,它所关注的是软件系统有哪些参与者,把这些参与者称为对象,找出这些软件系统的参与者也就是对象之后,分析这些对象有哪些特征、哪些行为,以及对象之间的关系,所以说面向对象的开发核心是对象
面向对象编程的2个非常重要的概念:类和对象
- 类是对象的类型,具有相同属性和行为事物的统称。类是抽象的,在使用的时候通常会找到这个类的一个具体存在。
- 类是对象的类型,对象是类的实例。类是抽象的概念,而对象是一个你能够摸得着,看得到的实体。二者相辅相成,谁也离不开谁。
2.定义类
- 类定义(构成)
class 类的名称():
# 类文档说明
属性:对象的属性
方法:对象的属性
-
类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。如果需要用在函数中使用类名.类属性.
-
实例变量:定义在方法中的变量,只作用于当前实例的类。
-
数据成员:类变量或者实例变量(方法中的变量)用于处理类及其实例对象的相关的数据。
-
方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
#实例化对象
people01 = person('joe',19,'男') #在实例化的时候传递参数
#对象名 = 类名(参数)
print(people01.name)
#通过对象名.属性名 访问实例属性(对象属性)
- 访问属性:
getattr(obj, name[, default]) #访问对象的属性
hasattr(obj,name) #检查是否存在一个属性
setattr(obj,name,value) #设置一个属性。如果属性不存在,会创建一个新属性
delattr(obj, name) #删除属性
#注意:name需要加单引号,obj为实例化对象名称`
#通过对象调用实例方法
people01.getName()
方法=构造方法+普通方法
构造方法不需要调用,在实例化的时候自动调用
Python内置类属性
__dict__ #类的属性(包含一个字典,由类的属性名:值组成) 实例化类名.__dict__
__doc__ #类的文档字符串 (类名.)实例化类名.__doc__
__name__ #类名,实现方式 类名.__name__
__bases__ #类的所有父类构成元素(包含了以个由所有父类组成的元组)
print(people01.__dict__) #会将实例对象people01的属性和值通过字典的形式返回
print(people01.__doc__)
- name:
__name__:如果是放在Modules模块中,就表示是模块的名字;
如果是放在Classs类中,就表示类的名字;
__main__:模块,xxx.py文件本身.被直接执行时,对应的模块名就是__main__了
可以在if __name__ == “__main__”:
中添加你自己想要的,用于测试模块,演示模块用法等代码。
作为模块,被别的Python程序导入(import)时,模块名就是本身文件名xxx了。
def a():
print('我是a方法')
if __name__ == '__main__':#只在当前文件中执行
a()
print(__name__) # 在当前脚本运行 输出 __main__
print(persion.__name__) #返回实例对象persion的类名
print(person.__bases__)
3.练习一
创建一个名为User的类,其中包含属性first_name和last_name,还有用户简介通常会存储的其他几个属性。在类User中定义一个名为describe_user()的方法,它打印用户信息摘要;再定义一个名为greet_user()的方法,它向用户发出个性化的问候。创建多个表示不同用户的实例,并对每个实例都调用上述两个方法.
class User():
def __init__(self,first_name,last_name,age,sex,phone,login_attempts=0):
#初始化 实例属性
self.first_name = first_name
self.last_name = last_name
self.age = age
self.sex = sex
self.phone = phone
self.login_attempts = login_attempts
#查看用户信息
def describe_user(self):
print('大家好我叫%s %s,我今年%d岁,我的电话是%s'%(self.first_name,self.last_name,self.age,self.phone))
#个性化问候
def greet_user(self):
print('尊敬的%s,恭喜你中了五百万。'%self.first_name)
#增加登录次数
def increment_login_attempts(self):
self.login_attempts += 1
print('当前登录次数%d'%self.login_attempts)
#重置登录次数
def reset_login_attempts(self):
self.login_attempts = 0
print('当前登录次数%d' % self.login_attempts)
if __name__ == '__main__':
joe = User('joe','black',19,'男','18600009999')
joe.describe_user()
joe.greet_user()
joe.increment_login_attempts()
joe.increment_login_attempts()
joe.increment_login_attempts()
joe.reset_login_attempts()