""""""
"""
1.面向?qū)ο缶幊?br>
2.函數(shù)式編程
3.面向?qū)ο缶幊?br>
"""
n=100
sum1=0
for x in range(n+1):
sum1+=x
print(sum1)
def add_student():
pass
class student_manager:
pass
value = input('數(shù)字')
if value=='1':
add_student()
""""""
"""
1.什么是類(lèi):---->類(lèi)是擁有相同屬性和相同功能的對(duì)象的集合(類(lèi)是抽象的)
對(duì)象:————>對(duì)象就是類(lèi)的實(shí)例(對(duì)象是具體的)
2.類(lèi)的聲明
格式:
class 類(lèi)名(父類(lèi)):
類(lèi)的說(shuō)明文檔
類(lèi)的內(nèi)容
說(shuō)明:
class---->是Python中聲明類(lèi)的關(guān)鍵字
類(lèi)名----->標(biāo)識(shí)符,不能是關(guān)鍵字熊杨;類(lèi)名使用駝峰式命名渺蒿。首字母大寫(xiě)
用駝峰式命名:如果一個(gè)名字由多個(gè)單子組成,第一個(gè)單詞首字母小寫(xiě)宣肚,后面每個(gè)單詞首字母都大寫(xiě)
userName
PEP8 命名:如果一個(gè)名字由多個(gè)單子組成寂殉,每個(gè)單詞都小寫(xiě)多個(gè)單詞有下劃線隔開(kāi)
user_name
(父類(lèi))-->繼承語(yǔ)法:讓聲明的類(lèi)繼承括號(hào)的父類(lèi),這個(gè)結(jié)構(gòu)可以省略,讓當(dāng)前的類(lèi)繼承Python的基類(lèi):object
:固定結(jié)構(gòu)
類(lèi)的說(shuō)明文檔--->對(duì)類(lèi)進(jìn)行說(shuō)明
類(lèi)的內(nèi)容-->包含屬性(變量)和方法(函數(shù))
方法:聲明類(lèi)的函數(shù)
"""
class Person:
def eat(self):
print('吃飯')
def sleep(self):
print('睡覺(jué)')
"""
3.對(duì)象的聲明
對(duì)象名=類(lèi)名()
對(duì)象名->變量名
類(lèi)名->必須是聲明過(guò)的類(lèi)(系統(tǒng)聲明的也行)
"""
p1=Person()
p2=Person()
""""""
"""
類(lèi)的內(nèi)容包含屬性和方法漆魔,分為:對(duì)象方法,類(lèi)方法和靜態(tài)方法
對(duì)象方法:直接聲明在類(lèi)中的函數(shù)却音,對(duì)象方法都有默認(rèn)參數(shù)self改抡,需要使用對(duì)象來(lái)調(diào)用
對(duì)象方法的調(diào)用:對(duì)象.方法名()。調(diào)用對(duì)象方法時(shí)不需要給默認(rèn)值self傳參系統(tǒng)會(huì)自動(dòng)將當(dāng)前對(duì)象傳遞給self系瓢。
self:誰(shuí)調(diào)用當(dāng)前的對(duì)象方法阿纤,self就指向誰(shuí).self就是當(dāng)前類(lèi)的對(duì)象,類(lèi)的對(duì)象能做的self都能做夷陋。
類(lèi)方法:
靜態(tài)方法:
"""
聲明類(lèi)
class Person:
def eat(self):
print('self',self)
print('吃飯')
print('======')
聲明對(duì)象
p1=Person()
print('p1',p1)
p1.eat('小胖')
print(p1)
""""""
"""
1.構(gòu)造方法:
構(gòu)造方法就是函數(shù)名和類(lèi)名一樣的方法欠拾。作用是用來(lái)創(chuàng)建對(duì)象的。
聲明類(lèi)的時(shí)候骗绕。系統(tǒng)會(huì)自動(dòng)為類(lèi)創(chuàng)建對(duì)應(yīng)的構(gòu)造方法
創(chuàng)建對(duì)象的過(guò)程:調(diào)用構(gòu)造方法在內(nèi)存去開(kāi)辟空間創(chuàng)建對(duì)象藐窄,并且自動(dòng)調(diào)用init方法對(duì)這個(gè)對(duì)象初始化
最后將創(chuàng)建好的對(duì)象地址返回
2.init方法
對(duì)象方法
不需要手動(dòng)調(diào)用,創(chuàng)建完對(duì)象會(huì)被自動(dòng)調(diào)用
"""
class Dog:
def init(self):
print('init方法')
dog1=Dog()
"""
3.帶參其他參數(shù)的init方法
init方法的參數(shù)要通過(guò)構(gòu)造方法來(lái)傳酬土。
"""
class Person:
def init(self,name='',age=0):
print(name,age)
p1=Person('小胖',18)
p2=Person('小明')
p3=Person(age=1)
""""""
"""
類(lèi)的內(nèi)容包含屬性和方法荆忍,屬性又分為對(duì)象的屬性和類(lèi)的字段
屬性:在類(lèi)中去保存數(shù)據(jù)的變量。
對(duì)象屬性:屬性的值會(huì)因?yàn)閷?duì)象的不同而不同撤缴。這種屬性需要聲明對(duì)象屬性刹枉。如:人的名字,人的年齡等
對(duì)象的屬性要通過(guò)對(duì)象來(lái)使用
1.對(duì)象屬性的聲明(重點(diǎn))
a.必須聲明在innit方法中
b.聲明格式: self.屬性=初值
2.使用對(duì)象屬性:對(duì)象.屬性
"""
聲明人類(lèi)屈呕,要求名字微宝,年齡,性別凉袱,屬性
class Person:
def init(self):
self.name='小胖'
self.age=18
self.sex='男'
p1=Person()
print(p1.name)
'''
'''
聲明一個(gè)人類(lèi)芥吟,要有名字,年齡专甩,性別三個(gè)屬性钟鸵,要求創(chuàng)建不同對(duì)象的時(shí)候就可以直接確定不同的屬性值
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中所有的數(shù)據(jù)都是對(duì)象,所有的變量
import copy
import random
class Student:
def init(self, name, age, score):
[圖片上傳失敗...(image-5c8c5b-1539763110271)]
self.name = name
self.age = age
self.score = score
# 定制當(dāng)前類(lèi)對(duì)象的打印格式
def __str__(self): #打印類(lèi)的對(duì)象不是打印地址值涤躲,就用這個(gè)函數(shù)
# return '想要打印的內(nèi)容' #打印的時(shí)候把想要打印的內(nèi)容作為返回值
return str(self.__dict__)
1.將對(duì)想給別的變量賦值
stu1 = Student('xiao', 18, 89)
stu2 = stu1 #只有一個(gè)對(duì)象棺耍,即stu1,stu2是存儲(chǔ)了和stu1一樣的Student('xiao', 18, 89)的地址
stu3 = copy.copy(stu1) #產(chǎn)生新的對(duì)象种樱,將新的地址賦值
[圖片上傳失敗...(image-8a592e-1539763110271)]
stu1.name = 'san'
print([圖片上傳失敗...(image-8c7226-1539763110271)]
stu2.name) #是san蒙袍,因?yàn)閟tu1的值改變了俊卤,但是兩者存儲(chǔ)的地址還是一樣的
print([圖片上傳失敗...(image-7f69ee-1539763110271)]
stu3.name) #是xiao,因?yàn)閏opy是淺拷貝,拷貝的是地址值
2.將對(duì)象作為列表的元素
student = [Student('小明', 23, 87), stu3, Student('小工', 22, 77)]
找到列表students中成績(jī)最好的學(xué)生的名字
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的使用條件害幅,序列要是相同的類(lèi)型消恍,并且元素支持大于比較
student.sort(key=lambda item:item.age) #后邊是返回值
for stu in student:
print(stu)
max1 = max(student, key=lambda item:item.score)
print('max:', max1) #返回最大年齡的學(xué)生的整體信息max: {'name': 'xiao', 'age': 18, 'score': 89}
1.根據(jù)姓名查找指定學(xué)生的信息。2.根據(jù)姓名修改指定學(xué)生的年齡
name = input('請(qǐng)輸入學(xué)生的名字:')
for stu in student:
if [圖片上傳失敗...(image-e20b91-1539763110270)]
stu.name == name:
stu.age = random.randint(10,20)
print(stu)
""""""
"""
1.類(lèi)的字段:
屬性:對(duì)象屬性以现,類(lèi)的字段
類(lèi)的字段:聲明在類(lèi)里面狠怨,函數(shù)外面的變量就是類(lèi)的字段.使用要通過(guò)類(lèi)來(lái)使用:類(lèi).字段
2.slots:用來(lái)約束當(dāng)前類(lèi)的屬性有哪些
"""
class Dog:
# num是類(lèi)的字段
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:
"""人類(lèi)"""
# 類(lèi)的字段
num = 61
# 對(duì)象屬性
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
# 對(duì)象方法
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
"""
類(lèi).name --> 獲取當(dāng)前類(lèi)的名字
"""
print(Person.name, type(Person.name))
2.doc
"""
類(lèi).doc --> 獲取類(lèi)的說(shuō)明文檔
"""
print(Person.doc)
print(int.doc)
print(dict.doc)
3.class
"""
對(duì)象.class -> 獲取對(duì)象的類(lèi), 類(lèi)能做的事情,他都可以做
"""
my_class = p1.class
p2 = Person('小花', 10, '女')
p2 = my_class('小花', 10, '女')
print(p2.name)
print(Person.num)
print(my_class.num)
4.dict
"""
類(lèi).dict --> 獲取當(dāng)前類(lèi)的所有類(lèi)的字段和其對(duì)應(yīng)的值邑遏,以字典的形式返回(了解)
對(duì)象.dict --> 獲取當(dāng)前對(duì)象所有的屬性和其對(duì)應(yīng)的值佣赖,以字典的形式返回
"""
print(Person.dict)
print(p1.dict)
5.module
"""
類(lèi).module -> 獲取當(dāng)前類(lèi)所在的模塊名
"""
print(Person.module)
from datetime import datetime
print(datetime.module)
6.bases
"""
類(lèi).bases -> 獲取當(dāng)前類(lèi)的父類(lèi), 返回的是一個(gè)元祖,元祖的元素是類(lèi)
"""
print(Person.bases)
print(p1)