""""""
"""
1.面向对象编程
2.函数式编程
3.面向对象编程
"""
n=100
sum1=0
for x in range(n+1):
sum1+=x
print(sum1)
def add_student():
pass
class student_manager:
pass
value = input('数字')
if value=='1':
add_student()
""""""
"""
1.什么是类:---->类是拥有相同属性和相同功能的对象的集合(类是抽象的)
对象:————>对象就是类的实例(对象是具体的)
2.类的声明
格式:
class 类名(父类):
类的说明文档
类的内容
说明:
class---->是Python中声明类的关键字
类名----->标识符,不能是关键字;类名使用驼峰式命名。首字母大写
用驼峰式命名:如果一个名字由多个单子组成,第一个单词首字母小写,后面每个单词首字母都大写
userName
PEP8 命名:如果一个名字由多个单子组成,每个单词都小写多个单词有下划线隔开
user_name
(父类)-->继承语法:让声明的类继承括号的父类,这个结构可以省略,让当前的类继承Python的基类:object
:固定结构
类的说明文档--->对类进行说明
类的内容-->包含属性(变量)和方法(函数)
方法:声明类的函数
"""
class Person:
def eat(self):
print('吃饭')
def sleep(self):
print('睡觉')
"""
3.对象的声明
对象名=类名()
对象名->变量名
类名->必须是声明过的类(系统声明的也行)
"""
p1=Person()
p2=Person()
""""""
"""
类的内容包含属性和方法,分为:对象方法,类方法和静态方法
对象方法:直接声明在类中的函数,对象方法都有默认参数self,需要使用对象来调用
对象方法的调用:对象.方法名()。调用对象方法时不需要给默认值self传参系统会自动将当前对象传递给self。
self:谁调用当前的对象方法,self就指向谁.self就是当前类的对象,类的对象能做的self都能做。
类方法:
静态方法:
"""
声明类
class Person:
def eat(self):
print('self',self)
print('吃饭')
print('======')
声明对象
p1=Person()
print('p1',p1)
p1.eat('小胖')
print(p1)
""""""
"""
1.构造方法:
构造方法就是函数名和类名一样的方法。作用是用来创建对象的。
声明类的时候。系统会自动为类创建对应的构造方法
创建对象的过程:调用构造方法在内存去开辟空间创建对象,并且自动调用init方法对这个对象初始化
最后将创建好的对象地址返回
2.init方法
对象方法
不需要手动调用,创建完对象会被自动调用
"""
class Dog:
def init(self):
print('init方法')
dog1=Dog()
"""
3.带参其他参数的init方法
init方法的参数要通过构造方法来传。
"""
class Person:
def init(self,name='',age=0):
print(name,age)
p1=Person('小胖',18)
p2=Person('小明')
p3=Person(age=1)
""""""
"""
类的内容包含属性和方法,属性又分为对象的属性和类的字段
属性:在类中去保存数据的变量。
对象属性:属性的值会因为对象的不同而不同。这种属性需要声明对象属性。如:人的名字,人的年龄等
对象的属性要通过对象来使用
1.对象属性的声明(重点)
a.必须声明在innit方法中
b.声明格式: self.属性=初值
2.使用对象属性:对象.属性
"""
声明人类,要求名字,年龄,性别,属性
class Person:
def init(self):
self.name='小胖'
self.age=18
self.sex='男'
p1=Person()
print(p1.name)
'''
'''
声明一个人类,要有名字,年龄,性别三个属性,要求创建不同对象的时候就可以直接确定不同的属性值
class Person2:
def init(self, name1, age1, sex1):
self.name = name1
self.age = age1
self.sex = sex1
p1 = Person2('小鄂', 20 , '女')
print(p1)
print(p1.name)
class Person3:
def init(self, name1, age1=0, sex1='女'):
self.name = name1
self.age = age1
self.sex = sex1
self.id = '007'
p3 = Person3('老鄂')
print(p3.name)
p3.name = '大鄂' #可以修改属性的值
print(p3.name)
python中所有的数据都是对象,所有的变量
import copy
import random
class Student:
def init(self, name, age, score):
[图片上传失败...(image-5c8c5b-1539763110271)]
self.name = name
self.age = age
self.score = score
# 定制当前类对象的打印格式
def __str__(self): #打印类的对象不是打印地址值,就用这个函数
# return '想要打印的内容' #打印的时候把想要打印的内容作为返回值
return str(self.__dict__)
1.将对想给别的变量赋值
stu1 = Student('xiao', 18, 89)
stu2 = stu1 #只有一个对象,即stu1,stu2是存储了和stu1一样的Student('xiao', 18, 89)的地址
stu3 = copy.copy(stu1) #产生新的对象,将新的地址赋值
[图片上传失败...(image-8a592e-1539763110271)]
stu1.name = 'san'
print([图片上传失败...(image-8c7226-1539763110271)]
stu2.name) #是san,因为stu1的值改变了,但是两者存储的地址还是一样的
print([图片上传失败...(image-7f69ee-1539763110271)]
stu3.name) #是xiao,因为copy是浅拷贝,拷贝的是地址值
2.将对象作为列表的元素
student = [Student('小明', 23, 87), stu3, Student('小工', 22, 77)]
找到列表students中成绩最好的学生的名字
max1 = student[0].score
name = student[0].name
for stu in student:
if stu.score > max1:
max1 = stu.score
name = [图片上传失败...(image-a868ff-1539763110271)]
stu.name
print(name, max1)
排序:sort的使用条件,序列要是相同的类型,并且元素支持大于比较
student.sort(key=lambda item:item.age) #后边是返回值
for stu in student:
print(stu)
max1 = max(student, key=lambda item:item.score)
print('max:', max1) #返回最大年龄的学生的整体信息max: {'name': 'xiao', 'age': 18, 'score': 89}
1.根据姓名查找指定学生的信息。2.根据姓名修改指定学生的年龄
name = input('请输入学生的名字:')
for stu in student:
if [图片上传失败...(image-e20b91-1539763110270)]
stu.name == name:
stu.age = random.randint(10,20)
print(stu)
""""""
"""
1.类的字段:
属性:对象属性,类的字段
类的字段:声明在类里面,函数外面的变量就是类的字段.使用要通过类来使用:类.字段
2.slots:用来约束当前类的属性有哪些
"""
class Dog:
# num是类的字段
num=10
def init(self,color,name,type):
self.color=color
self.name=name
self.type=type
Dog.num=100
print(Dog.num)
dog1=Dog('黄色','大黄','土狗')
print(dog1)
class Person:
"""人类"""
# 类的字段
num = 61
# 对象属性
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
# 对象方法
def run(self):
print('%s在跑' % self.name)
def __str__(self):
return '<<'+self.__class__.__module__+'.'+self.__class__.__name__+\
'object at ' + hex(id(self))+'>>'
p1 = Person('小明', 18, '男')
1.name
"""
类.name --> 获取当前类的名字
"""
print(Person.name, type(Person.name))
2.doc
"""
类.doc --> 获取类的说明文档
"""
print(Person.doc)
print(int.doc)
print(dict.doc)
3.class
"""
对象.class -> 获取对象的类, 类能做的事情,他都可以做
"""
my_class = p1.class
p2 = Person('小花', 10, '女')
p2 = my_class('小花', 10, '女')
print(p2.name)
print(Person.num)
print(my_class.num)
4.dict
"""
类.dict --> 获取当前类的所有类的字段和其对应的值,以字典的形式返回(了解)
对象.dict --> 获取当前对象所有的属性和其对应的值,以字典的形式返回
"""
print(Person.dict)
print(p1.dict)
5.module
"""
类.module -> 获取当前类所在的模块名
"""
print(Person.module)
from datetime import datetime
print(datetime.module)
6.bases
"""
类.bases -> 获取当前类的父类, 返回的是一个元祖,元祖的元素是类
"""
print(Person.bases)
print(p1)