day-14-类和对象

""""""
"""
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)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容