博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day24 Pythonpython 面向对象设计 类
阅读量:7122 次
发布时间:2019-06-28

本文共 6367 字,大约阅读时间需要 21 分钟。

将一些相同特征和动作的成为类,现有类才能创建对象,对象就是特征和动作的结合体

类:把一类事物的相同特征和动作整合到一起就是类。类是一个抽象概念

对象:就是基于类而创建的一个具的事物(具体存在的),也是特征和动作给的结合

类是用来描述 一类事物,类的对象指的是这一类书屋中的一个个个体,是事物就要有属性属性分为

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']

转载于:https://www.cnblogs.com/charon2/p/10411409.html

你可能感兴趣的文章
android https
查看>>
一个ClientDataset的Delta与XML相互转换
查看>>
Android 源码编译
查看>>
IE zoom:1 原理 以及应用
查看>>
C++单例模板
查看>>
tomcat html htm静态文件乱码utf-8的有关问题正文
查看>>
mysql规范
查看>>
jsp 练习 输入邮箱进行判断
查看>>
java的map.toString()后在前端js转成json格式
查看>>
ZigBee组网
查看>>
maven 项目出现 java.lang.ClassNotFoundException: or...
查看>>
PaperFoldMenuController
查看>>
JCMSegmentedPageController
查看>>
JSTokenField
查看>>
[应用模板]简洁优雅网站
查看>>
VCL篇:DevExpress v16.1新功能介绍
查看>>
iOS 之 CFBridgingRelease
查看>>
变量的存储类型
查看>>
使用AVAudioPlayer出现的问题
查看>>
封装性
查看>>