将一些相同特征和动作的成为类,现有类才能创建对象,对象就是特征和动作的结合体
类:把一类事物的相同特征和动作整合到一起就是类。类是一个抽象概念
对象:就是基于类而创建的一个具的事物(具体存在的),也是特征和动作给的结合
类是用来描述 一类事物,类的对象指的是这一类书屋中的一个个个体,是事物就要有属性属性分为
1:数据属性:就是变量
2:函数属性:就是函数,在面向对象里通常称为方法
注意:::类和对象均用点来访问自己的属性
class Chinese: '这是一个中国人' dang='共青团' def sui_di_tu_tan(): print('正在吐') #调用这个函数一定要加参数,只不过还没定义参数的意义 def cha_dui(self): print('插到了前面')#数据属性print(Chinese.dang)#函数属性Chinese.sui_di_tu_tan()print(dir(Chinese))#查看类的属性字典print('=========================================')print(Chinese.__dict__)print('=============================================')print(Chinese.__dict__['dang'])print('=========================================')print(Chinese.cha_dui(1))print('==============================')Chinese.__dict__['sui_di_tu_tan']()Chinese.__dict__['cha_dui']("you")结果:共青团正在吐['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'cha_dui', 'dang', 'sui_di_tu_tan']========================================={'__module__': '__main__', '__doc__': '这是一个中国人', 'dang': '共青团', 'sui_di_tu_tan':, 'cha_dui': , '__dict__': , '__weakref__': }=============================================共青团=========================================插到了前面None==============================正在吐插到了前面
对象由类实例化而来,类实例化的结果称为一个实例或者称为一个对象
class Chinese: '这是一个中国人' dang='共青团' def sui_di_tu_tan(): print('正在吐') def cha_dui(self): print('%s插到了前面' %self.名字) #初始化:__init__定制对象的属性,__init__会自动return所以要是自己加上return回报错 def __init__(self,name,age,gender): print('初始化开始') print('-------------') print(self)#========>p1 print('-------------') self.名字=name #p1.名字=name self.年龄=age #p1.年龄=age self.性别=gender #p1.性别=gender print('初始化结束') #class自动帮你return了 def eat_foot(self,food): print('%s is eating %s' % (self.名字,food))#实例化会出发__init__函数运行p1 = Chinese('charon',12,'F')print(p1.__dict__)print(p1.名字)#p1产生的字典由__init__产生,p1调用dang在__init__作用域没找到,就去外一层Chinese作用域找dangprint(p1.dang)#print(Chinese.__dict__)Chinese.sui_di_tu_tan()Chinese.cha_dui(p1)#p1.sui_di_tu_tan()p1.cha_dui()#与self内春地址相同print(p1)p1.eat_foot('shit')print('=========================================')p2 = Chinese('pluto',100,'F')p2.eat_foot('apple')结果:ChinaJapan{'name': 'charon'}Japaneventmenteventment{'__module__': '__main__', 'country': 'Japan', '__init__':, 'paly_ball': , '__dict__': , '__weakref__': , '__doc__': None, 'dang': 'eventment'}==================================================={'__module__': '__main__', 'country': 'Japan', '__init__': , 'paly_ball': , '__dict__': , '__weakref__': , '__doc__': None}
类的增删改查
# -*- coding:utf8 -*-class Chinese: country = 'China' def __init__(self,name): self.name=name def paly_ball(self,ball): print('%s in playing %s' % (self.name,ball))#查看print(Chinese.country)#修改Chinese.country = 'Japan'print(Chinese.country)#用这个类生成一个实例p1 = Chinese('charon')print(p1.__dict__)print(p1.country)#增加Chinese.dang='eventment'print(Chinese.dang)print(p1.dang)#删除#del Chinese.dangprint(Chinese.__dict__)print('===================================================')del Chinese.dangprint(Chinese.__dict__)结果:ChinaJapan{'name': 'charon'}Japaneventmenteventment{'__module__': '__main__', 'country': 'Japan', '__init__':, 'paly_ball': , '__dict__': , '__weakref__': , '__doc__': None, 'dang': 'eventment'}==================================================={'__module__': '__main__', 'country': 'Japan', '__init__': , 'paly_ball': , '__dict__': , '__weakref__': , '__doc__': None}
实例属性增删改查
class Chinese: country='China' def __init__(self,name): self.name=name def paly_ball(self,ball): print('%s 正在打 %s' % (self.name,ball))#生成一个实例p1 = Chinese('charon')#查看实例属性字典print(p1.__dict__)#查看实例属性print(p1.name)print(p1.paly_ball)p1.paly_ball('football')#增加实例属性p1.age = 18print(p1.__dict__)print(p1.age)#属性分为有函数属性跟数据属性#实例只有数据属性,他的函数属性是调类的#修改实例属性p1.age=200print(p1.__dict__)print(p1.age)#删除del p1.ageprint(p1.__dict__)结果:{'name': 'charon'}charon>charon 正在打 football{'name': 'charon', 'age': 18}18{'name': 'charon', 'age': 200}200{'name': 'charon'}
对象和实例属性
# class Chinese:# country='China'# def __init__(self,name):# self.name=name# def paly_ball(self,ball):# print('%s 正在打 %s' % (self.name,ball))# p1=Chinese('charon')# print(p1.country)# p1.country='Japan'# #print(p1.__dict__)# #print(Chinese.__dict__)# print(p1.country)# print(Chinese.country)# print('类的--->',Chinese.country)# print('实例的--->',p1.country)# class Chinese:# country = '中国'# def __init__(self,name):# self.name=name## def play_ball(self,ball):# print('%s 正在打 %s' %(self.name,ball))# p1=Chinese('alex')# print(p1.country)country='中国-------------------'class Chinese: country='中国' def __init__(self,name): self.name=name #这个country是个变量,类是点加country print('--->',country) def play_ball(self,ball): print('%s 正在打 %s' %(self.name,ball))#print(Chinese.__dict__)#print(Chinese.country)p1=Chinese('alex')print(Chinese.country)print(Chinese.__dict__)结果:---> 中国-------------------中国{'__module__': '__main__', 'country': '中国', '__init__':, 'play_ball': , '__dict__': , '__weakref__': , '__doc__': None}
换个姿势搞你,就不信你不爽
class Chinese: country='China' l=['a','b'] def __init__(self,name): self.name=name print(self.name) def play_ball(self,ball): print('%s 正在打 %s' %(self.name,ball))p1=Chinese('charon')# p1.l=['a','b','c']# print(p1.l)# print(Chinese.l)# print(Chinese.__dict__)print(p1.l)p1.l.append('c')print(p1.l)print(p1.__dict__)print(Chinese.l)结果:charon['a', 'b']['a', 'b', 'c']{'name': 'charon'}['a', 'b', 'c']