ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

类和对象的相关知识

2022-07-01 20:02:12  阅读:110  来源: 互联网

标签:__ count 对象 self 知识 Person print 相关 def


类变量就是静态变量,所有方法(对象)要用到同一个属性是,将其定义成类变量

# class Fruits:
#     discount=0.8   # 类变量, 静态变量
#     # 当所有变量都共用到一个属性时,定义成类变量
#     def __init__(self,name,price):
#         self.name=name
#         self.price=price
#         self.pri=self.price * Fruits.discount
#         print(self.pri)
#
# apple=Fruits('苹果',5)

练习,求圆的周长和面积

正解:这样后面半径修改,周长、面积也会发生变化

# from math import pi
# class Circle:
#     def __init__(self,r):
#         self.r=r
#     def leng(self):
#         self.len=2*pi*self.r
#         print('周长', self.len)
#     def s(self):
#         self.area=pi*self.r**2
#         print('面积',self.area)
#
# c1=Circle(3)
# c1.leng()
# c1.s()
# c1.r=5  # 修改半径
# c1.leng()

 

 

坑:这样写,当修改了半径后,周长、面积没有改变。因为只在c1=Circle(3)时调用了init方法,后面修改,没有发生改变

# from math import pi
# class Circle:
#     def __init__(self,r):
#         self.r=r
#         self.len=2*pi*self.r
#         self.area=pi*self.r**2
#         print('周长', self.len)
#         print('面积',self.area)
# 
# c1=Circle(3)
# c1.r=5
# print(c1.len)

 

 

总结:
类名作用:
1.类名可以调类中的变量Fruits.discount
2.类名可以实例化创建一个对象Fruits()
3.调用一个方法,类名.方法名(对象)

对象名作用:
查看对象的属性 对象名.属性
调用对象的方法 对象名.方法名()

类和对象,实例和实例化?
什么是类? Person Dog Fruits
什么是对象? banana dog1 zhangsan
什么是实例? 对象就是实例,对象就是实例的另外一种称呼
什么是实例化? 实例化是一个动词,类创造实例的过程叫做实例化
对象=类名() # 实例化

# class A:
#     静态变量='值'
#     def __init__(self,属性):
#         self.属性=属性
#     def show(self):  #实例方法
#         print('展示所有的属性')
#
# a=A('参数')  # 对象a

 

 

#全家的钱放在一起

# class Person:
#     sum=0   # 目前全家工资总和
#     def __init__(self):
#         self.salary=1000
#
# father=Person()
# mother=Person()
# # print(mother.sum)  #通过对象指针拿到sum
# # print(mother.salary) # salary 就在对象空间里

#实现全家的钱加在一起
# Person.sum+=father.salary
# Person.sum+=mother.salary
# print('Person.sum',Person.sum)
# print('father.sum',father.sum)
# print('mother.sum',mother.sum)

 

 

#练习
#写一个类,统计一共实例化多少个变量

#方法1
# class Person:
#     count=0
#     def __init__(self):
#         self.num=1
#
# lisir=Person()
# gonsir=Person()
# Person.count+=lisir.num
# Person.count+=gonsir.num
# print('Person.count',Person.count)
# print('lisir.count',lisir.count)
# print('gonsir.count',gonsir.count)


#方法2——老师
# class Person:
#     count=0
#     def __init__(self):
#         Person.count+=1
#
# lisir=Person()
# gonsir=Person()
# print('Person.count',Person.count)
# print('lisir.count',lisir.count)
# print('gonsir.count',gonsir.count)

 

# class A:
#     num=0
#     def __init__(self):
#         self.num+=1
#
# a1=A()
# a2=A()
# a3=A()
# print(A.num)  # 0
# print(a1.num)  #  1
# print(a2.num) #  1
# print(a3.num)  # 1


# class A:
#     lst=[]
#     def __init__(self):
#         self.lst.append(1)  # 并没有对lst赋值,用对象修改静态变量(类变量),只有用到了赋值,才相当于在自己的对象空间中新建
#
# a1=A()
# a2=A()
# a3=A()
# print(A.lst)   # [1,1,1]
# print(a1.lst)  # [1,1,1]
# print(a2.lst)  # [1,1,1]
# print(a3.lst)  # [1,1,1]



# class A:
#     lst=[0,1]
#     def __init__(self):
#         self.lst[0]+=1   # 确实时重新赋值了,赋值给lst第一个元素,并没有对列表进行重新赋值
#
# a1=A()
# a2=A()
# a3=A()
# print(A.lst)   # [3,1]
# print(a1.lst)  # [3,1]
# print(a2.lst)  # [3,1]
# print(a3.lst)  # [3,1]
# 总结:
# 操作静态变量时,如果时查看,用类或对象都可以
# 如果是修改,用类名去修改,永远不会错
# 不要在对象空间中创建一个和类变量同名的实例变量

# __dict__方法,查看类和对象空间中存储了什么

# class Student:
#     age=18
#     def __init__(self,id,name,sex,tel):
#         self.id=id
#         self.name=name
#         self.sex=sex
#         self.tel=tel
#
#
#     def choose_course(self):
#         print('选择课程')
#
#     def show_score(self):
#         print('查看分数')
#
# print(Student.__dict__)
# lw=Student(1,'老王','男',13274582657)
# print(lw.__dict__)

 



标签:__,count,对象,self,知识,Person,print,相关,def
来源: https://www.cnblogs.com/gm11/p/16435812.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有