'''
類:就是擁有相同功能呢個相同屬性的對象集合
對象:累的實列(對象是具體的)
*變成方式
*面向過程編程(以算法為工具)
*面向對象編程(以類和對象為工具(生活化)
*\類:對用于相同功能放大和相同屬性(屬性的封裝
封裝效果:一個類中可以對多個功能進行封裝(多個函數(shù);封裝多個屬性
*累的聲明格式
*class類名(父類列表
- 累的內容
說明
class生門類的關鍵字
類名標識符.不能是哦關鍵字,駝峰是命名(第一個單詞字母小寫其他的單詞字母都是大寫
(父類列表):這個比分可以省.這個是集成語法
累的內容:光開累的方法和累的屬性
類中的方法
方法(就是聲明在累的函數(shù)
1.對象方法:通過對象調用 對象.函數(shù)名
直接寫在累的方法,自帶一個self參數(shù)
2.類方法
3,靜態(tài)方法
構造方法:類型名()--->創(chuàng)建類對應的對象
創(chuàng)建累的時候,系統(tǒng)會默認給我們創(chuàng)建這個類對應的構造方法
class Person:
def eat(self):
print('人吃飯')
p1 =Person() #創(chuàng)建Person類的對象,并且將對象的地址存到p1中
p2 =Person()
p3 = p2
print(id(p1),id(p2),id(p3))
調用對象方法
通過對象調用對象方法,默認參數(shù)
一個雷可以有多個對象
構造方法:系統(tǒng)自動創(chuàng)建的,方法名和類名一樣,用來創(chuàng)建對象
2.init: init方法的功能是用來做初始化的,和添加對象屬性的
當我們通過構造方法去穿件對象的時候,系統(tǒng)會自動條用init方法
class Dog:
def init(self):
print('init')
創(chuàng)建對象過程:調用構造方法在內存中開辟空間創(chuàng)建一個對象,然后用用新建的這個對象去調用init方法
類中的內容:屬性和方法
1屬性:(保存值得)
a.對象的屬性:不同的對象,對應的值可能不一樣,這樣的屬性是對象屬性,
類的字段:所有的對象對應的值是一樣的
對象屬性
類中的對象屬性是聲明在init方法中的,并且聲明格式是:self,屬性名 = 初值
2.方法:保存功能的
對象方法
類方法
靜態(tài)方法
class Student:
def __init__(self):
self.name ='余婷'
self.age = 0
self.id -'001'
stu1 = Student()
print(stu1.mame,stu1.age,stu1.id)
stu1.mame ='張三'
class Rectangle:
def __init__(self,width,tall):
self.width=width
# self.tall=tall寫一個矩形,有長和寬兩個功能,分別是求周長面積
# 練習2:寫一個班級類,編輯里面有多個學生的成績(一門),可以獲取編輯成績中的最高分
python是童泰語言,Python中類的對象的屬性可以進行增刪的操作
class Person:
def __init__(self):
self.name ='張三'
self.age = 18
self.height = 160
p1 = Person()
print(p1.mame)
對象方法:
直接聲明在類的函數(shù)默認是對象方法,有一個默認參數(shù)self
對象方法要通過對象來用
對象方法中默認參數(shù)self,不需要傳參,以為在調用這個方法的時候系統(tǒng)會自動將當前傳給self
那個對象調用的方法,self就是向誰
class Circle:
def __init__(self,ranius1):
self.ranius = ranius1
def area(self):
print('求圓的面積')
class Circle:
def __init__ (self,width,length):
self.width=width
self.length=length
print('%d長乘以寬:'%(width*length))
class Studentclass
def __init__(self,result,class_name,subjects):
self.subjects=subjects
self.class_name=class_name
self.result=result
# 類的屬性叫類的字段
# 類的字段就是聲明在累的里面,方法的外面的變量
#什么樣的屬性聲明成類的字段
#屬于類的,對于這個類的所有的對象來說其值是共享的
通過類來使用:類.字段
class Person:
# 這個number就是類的字段
number=90
print(Person.number)
寫一個類,用一個屬性來保存這個類的對象的個數(shù)
class Ball:
count = 0
def __init__(self):
Ball.count+=1
ball1 = Ball()
print(Person.number)
作業(yè)
向對象作業(yè)1:
# 1.聲明 個電腦類: 屬性:品牌砰左、顏 、內存 法:打游戲、寫代碼、看視頻
# a.創(chuàng)建電腦類的對象峡懈,然后通過對象點的 式獲取妒牙、修改、添加和刪除它的屬性
b.通過attr相關 法去獲取五鲫、修改屡江、添加和刪除它的屬性
class Computer:
def __init__(self,brand,color,memory):
self.brand=brand#品牌
self.color=color#顏色
self.memory=memory#內存
def play_the_game(self):
print('打游戲')
def write_the_code(self):
print('寫代碼')
def watching_TV(self):
print('看視頻')
c1 = Computer('蘋果','white','8GB')
c1.play_the_game()
c1.write_the_code()
c1.watching_TV()
#獲取
print(c1.brand,c1.memory,c1.color)
print(getattr(c1,'brand'))
print(c1.__getattribute__('brand'))
#修改
c1.brand = '華為'
print(c1.brand)
setattr(c1,'memory',128)
print(c1.memory)
c1.__setattr__('color','har')
print(c1.color)
#添加
c1.sex= 'nanxxxxzxxxx'
print (c1.sex)
setattr(c1,'The_keyboard','鍵盤')
print(c1.The_keyboard)
c1.__setattr__('The_mouse','鼠標')
print(c1.The_mouse)
# #刪除
# del c1.brand
# delattr(c1, 'memory')
print(hasattr(Computer,'brand'))
# 2.聲明 個 的類和狗的類:
# 狗的屬性:名字芭概、顏 、 齡 狗的 法:叫喚
人的屬性:名字惩嘉、齡罢洲、狗 的 法:遛狗
a.創(chuàng)建 的對象 明,讓他擁有 條狗 文黎,然后讓 明去遛
class People:
def __init__(self,name,age,dog,):
self.age=age
self.name=name
self.dog=dog
def Walk_the_dog(self):
print('名字:%s 年齡:%d' %(self.name,self.age))
print('%s正在遛%s' % (self.name,self.dog.老污龜))
self.dog.call()
class Dog:
def __init__(self,老污龜,color,age):
self.老污龜=老污龜
self.color=color
self.age=age
def call(self):
print('%s汪汪汪' %self.老污龜)
dog1 = Dog('老污龜','green',12)
person1 = People('小明',23,dog1)
person1.dog.call()
person1.Walk_the_dog()
# # 3.聲明 個矩形類:
# # 屬性: 惹苗、寬 法:計算周 和 積 a.創(chuàng)建 同的矩形,并且打印其周 和 積
class Rectangular:
def __init__(self,long,wide):
self.long=long
self.wide=wide
def area(self):
return self.long * self.wide
def perimeter(self):
return (self.long + self.wide) * 2
# print('周長是%s面積是%s:%d'%(self.long*self.wide))
r1 = Rectangular(10,20)
print(r1.area())
r2 = Rectangular(10,20)
print(r2.perimeter())
# 4.創(chuàng)建 個學 類:
# 屬性:姓名耸峭, 齡桩蓉,學號 法:答到,展示學 信息 創(chuàng)建 個班級類:
屬性:學 劳闹,班級名 法:添加學 院究,刪除學 洽瞬,點名
class Student(object):
def __init__(self,name,age,id):
self.name = name
self.age = age
self.id = id
def amount_to(self):
print('答到')
def select_info(self):
print('姓名:%s 年紀:%d 學號:%d' % (self.name,self.age,self.id))
class Class_student(object):
student_info = {}
def __init__(self,student,class_name):
self.student = student
self.class_name = class_name
def add_student(self):
self.student_info[self.student.id] = [self.student.name,self.student.age]
print('添加成功')
def del_student(self):
self.student_info.pop(self.student.id)
print('刪除成功')
def sign_in(self):
if self.student.id in self.student_info:
print("%s到了" % self.student.name)
else:
print('%s還沒到' % self.student.name)
if __name__ == '__main__':
stu1 = Student('txf',12,1)
stu1.amount_to()
stu1.select_info()
class_stu = Class_student(stu1,'python1806')
class_stu.add_student()
class_stu.sign_in()
class_stu.del_student()
class_stu.sign_in()
# 5.寫 個類,封裝所有和數(shù)學運算相關的功能(包含常 功能和常 值业汰, 如:pi,e等)
class Math(object):
pi = 3.14
e = 10
def rectangle_area(self,width,height):
return width*height
def circle_area(self,radius):
return self.pi * radius**2
def power(self,x):
return self.e**x
def add(self,x,y):
return x+y
if __name__ == '__main__':
m = Math()
print(m.pi)
print('矩形面積是:%d' % m.rectangle_area(10,20))
print('圓的面積:%d' % (m.circle_area(3)))
print('10的%d次方是:%d' % (3,m.power(3)))
print('3+4等于%d' % m.add(3,4))
結果
D:\Users\Administrator\PycharmProjects1806\類和對象\venv\Scripts\python.exe D:/Users/Administrator/PycharmProjects1806/類和對象/練習.py
打游戲
寫代碼
看視頻
蘋果 8GB white
蘋果
蘋果
華為
128
har
nanxxxxzxxxx
鍵盤
鼠標
False
老污龜汪汪汪
名字:小明 年齡:23
小明正在遛老污龜
老污龜汪汪汪
200
60
答到
姓名:txf 年紀:12 學號:1
添加成功
txf到了
刪除成功
txf還沒到
3.14
矩形面積是:200
圓的面積:28
10的3次方是:1000
3+4等于7
Process finished with exit code 0