# #面向对象设计:
# def dog(name,gender,type):
# def jiao(dog):
# print('One Dog[%s],wfwfwf'%dog['name'])
# def walk(dog):
# print('One Dog[%s] walking ' %dog['name'])
# def init(name,gender,type):
# dog1 = {
# 'name':name,
# 'gender':gender,
# 'type':type,
# 'jiao':jiao,
# 'walk':walk,
# }
# return dog1
# return init(name,gender,type)
# d1 = dog('pandaboy','male','big')
# d2 = dog('pandaboy1','female','small')
# print(d1)
# print(d2)
# d1['jiao'](d1)
# d2['walk'](d2)
#########################################################################################################
# F:\Python\PythonLeaning\venv\Scripts\python.exe F:/Python/PythonLeaning/每日学习打卡/Day24.py
# {'name': 'pandaboy', 'gender': 'male', 'type': 'big', 'jiao': <function dog.<locals>.jiao at 0x00000000029CA6A8>, 'walk': <function dog.<locals>.walk at 0x00000000029CA730>}
# {'name': 'pandaboy1', 'gender': 'female', 'type': 'small', 'jiao': <function dog.<locals>.jiao at 0x00000000029CA7B8>, 'walk': <function dog.<locals>.walk at 0x00000000029CA840>}
# One Dog[pandaboy],wfwfwf
# One Dog[pandaboy1] walking
#
# Process finished with exit code 0
#######################################################################################################################
# 类的定义:把一类事物的相同特征和动作整合到一起就是类,类是一个抽象的概念
# 对象:就是一个具体的事物存在,基于类而创建的一个具体的事物,具体存在的,也就是动作和特征整合到一起
# 学校类:
# 特征:name,addr,type
# 动作:考试,招生,开除学生
# def school(name,addr,type):
# def init(name, addr, type):
# sch = {
# 'name': name,
# 'addr': addr,
# 'type': type,
# 'test': test,
# 'employ': employ,
# }
# return sch
# def test(school):
# print('%s学校正在考试'%school['name'])
# def employ(school):
# print('%s %s 正在招生'%(school['type'],school['name']))
# return init(name,addr,type) #初始化函数
# s1 = school('oldboy','地址','类型')
# print(s1)
# s1['test'](s1)
# s1['employ'](s1)
# 自我总结:1.先写类(写出类事物的共有特征和共有的动作);2.写对象的属性(对象的特征)[赋予return值];3.定义各项动作函数
#——————————————————————————————————————————————————————————#
#用面向对象编程独有的语法class去实现面向对象设计,self就是面向对象自己
# class Dog: 不用设计return值,本质就是执行了初始化值
#小结:
#一门面向对象的语言不一定会强制写OO程序,例如C++可以被认为更好的“C”,而Java则要求万物皆为类,此外还规定,一个源文件对应一个类文件
# 在Python中,类和OOp都不是日常编程所必须的,尽管它从一开始设计就是面向对象,并且结构上支持OOP,但是pyhon没有限定或要求在应用中写OO的代码
# 用面向对象的语言写程序,和一个程序的设计是面向对象的,这是两个完全不同的概念
#——————————————————————————————————————————————————————————
# 什么是类,什么是对象?
# 类即类别、种类,是面向对象设计最重要的概念,对象是特征与技能的结合体,而类则是一系列对象相似的特征与技能的结合体
# 类和对象的区别?
# 那么问题来了,先有的一个个具体存在的对象(比如一个具体存在的人),还是先有的人类这个概念,这个问题需要分两种情况去看
# 在现实世界中:先有对象,再有类
# 在程序中:务必保证先定义类,后产生对象
# 实例化:由类生产的对象的过程就是实例化
#在python中声明函数和声明类很相似
# 声明函数
# def 函数名字(我是参数):
# '函数文档字符串'
# 函数体
#——————————#
# 声明类(可以没有函数的括号)
# class 类名:
# '类的文档字符串'
# 类体
#——————————#
# class Chinese:
# '这是一个中国人的类'
# pass
# print(Chinese)
# F:\Python\PythonLeaning\venv\Scripts\python.exe F:/Python/PythonLeaning/每日学习打卡/Day24.py
# <class '__main__.Chinese'> 文件类型:class 模块名:__main__
#
# Process finished with exit code 0
#——————————#
# 实例化(类+加括号)
# 新式类:所有的类都必须加object class Chinese(object)表示继承了object对象
#——————————————————————————————————————————————————————#
# 属性
# 类是用来描述一类事物,类的对象指的是这一类事物中的一个个体
# 是事物就要有属性,属性分为:1.数据属性,即变量;2.函数属性:就是函数,在面向对象里通常称为方法
# 注意:类和对象均用点来访问自己的属性
# class Chinese:
# '这是一个中国人的类'
# government = '共产_党'
# def handsome(self):
# print('so handsome')
# print(Chinese.government)
# Chinese.handsome('目的只是为了传送值')
# F:\Python\PythonLeaning\venv\Scripts\python.exe F:/Python/PythonLeaning/每日学习打卡/Day24.py
# 共产_党
# so handsome
#
# Process finished with exit code 0
#——————————————————————————————————————————————————————#
# 类的其他属性内容
# 所有的类都有源头:object
# print(Chinese.__name__)#类名
# print(Chinese.__doc__)#文档
# print(Chinese.__bases__)#元祖显示object
# print(Chinese.__module__)#类定义所在模块
# 实例化:调用了__init__的内容,实例只有数据属性,没有函数属性
# class Chinese:
# '这是一个中国人的类'
# government = '共产_党'
# def __init__(name,age,gender):
# dic = {
# 'name':name,
# 'age':age,
# 'gender':gender,
# }
# return dic
# def __init__(self,name,age,gender):
# print('我是初始化函数,我开始运行')
# self.name = name
# self.age = age
# self.gender =gender
# print('初始化函数运行完毕')
# def handsome(self):
# print('so handsome')
# def work(self):
# print('work work')
# # return init(name,age,gender) class自动return
# p1 = Chinese('pandaboy',18,'male')
# print(p1.__dict__)
# 类有类的属性字典,实例有实例的属性字典,实例没有函数属性
# 总结 定义了self会自动,实例一定能访问类属性,但是类属性不能访问实例属性
# 类 实例
# | |
# dang = 'gong' self.mingzi = 'name'
# def __init__(self,name,age) /
# def method()
# 实例化的过程实际就是执行__init__的过程,这个函数内部只是为实例本身即self设定了一堆变量,所以实例只有数据属性
# 1.实例只有数据属性(实例的函数属性严格来说是类的函数属性)
# 2.def实例/对象,只是回收了实例的数据属性,函数属性是属于类的,不会回收
# 3.实例调用的方法是在类里去找的
#——————————————————————————————————————————————#
# 练习:编写一个学生类,产生一堆学生对象,要求有一个计数器(属性),统计总共实例了多少个对象
#——————————————————————————————————————————————#
# 类属性又称为静态变量,或者是静态数据,这些数据是与它们所属的类对象绑定的,不依赖与任何类实例,C++和Java要加上static
# class Chinese:
# country = 'China'
# def __init__(self,name):
# self.name = name
# def play_ball(self,ball):
# print('%s 正在玩 %s' %(self.name))
# def say_word(self,word):
# print('%s 说 %s' %(self,word))
#查看类属性
# print(Chinese.country)
# F:\Python\PythonLeaning\venv\Scripts\python.exe F:/Python/PythonLeaning/每日学习打卡/Day24.py
# China
#
# Process finished with exit code 0
###################################################################################################
# 修改类属性
# Chinese.country = 'CHINA'
# print(Chinese.country)
# F:\Python\PythonLeaning\venv\Scripts\python.exe F:/Python/PythonLeaning/每日学习打卡/Day24.py
# CHINA
#
# Process finished with exit code 0
###################################################################################################
# 增加类属性
# Chinese.dang ='派别'
# print(Chinese.dang)
# p1 = Chinese.dang
# print(p1)
# F:\Python\PythonLeaning\venv\Scripts\python.exe F:/Python/PythonLeaning/每日学习打卡/Day24.py
# 派别
# 派别
# Process finished with exit code 0
###################################################################################################
# 删除
# del Chinese.country
###################################################################################################
# class Chinese:
# country = 'China'
# def __init__(self,name):
# self.name = name
# def play_ball(self,ball):
# print('%s 正在玩 %s' %(self.name,ball))
# def say_word(self,word):
# print('%s 说 %s' %(self,word))
# p1 = Chinese('alex')
# print(p1.__dict__)
# 查看
# print(p1.name)
# p1.play_ball('篮球') #实际是访问的类的属性
#增加
# p1.age = 18
# print(p1.__dict__)
# print(p1.age)
#不要修改字典的底层结构

Pyhton学习——Day24的更多相关文章

  1. day24 Pyhton学习 反射

    一.isinstance,type,issubclass issubclass() 这个内置函数可以帮我们判断x类是否是y类的子类 issubclass(x,y) class Base: pass c ...

  2. Pyhton学习——Day26

    #多态:多态指的是一类事物有多种形态# import abc# class Animal(metaclass = abc.ABCMeta):# 同一类事物:动物# @abc.abstractclass ...

  3. pyhton 学习

    官方学习文档 https://docs.python.org/3/tutorial/

  4. 20190320_head first pyhton学习笔记之构建发布

    1.把代码nester.py放入文件夹nester中,在文件夹中再新建一个setup.py文件,文件内容如下: from distutils.core import setup setup( name ...

  5. Pyhton学习——Day2

    Python开发IDE(工具)Pycharm.eclipse1.循环while 条件 #循环体 #条件为真则执行 #条件为假则执行break用于退出所有循环continue用于退出当前循环 2.Pyc ...

  6. Pyhton学习——Day28

    #上下文协议:文件操作时使用with执行# with open('a.txt','w',encoding='utf-8') as f1:# with语句,为了让一个对象兼容with语句,必须在这个对象 ...

  7. Pyhton学习——Day27

    # hasattr(obj,'name')-->obj.name# getattr(obj,'name',default = 'xxx')--->obj.name# setattr(obj ...

  8. Pyhton学习——Day25

    #面向对象的几个方法#1.静态方法@staticmethod,不能访问类属性,也不能访问实例属性,只是类的工具包#2.类方法:@classmethod,在函数属性前加上类方法,显示为(cls)代表类, ...

  9. Pyhton学习——Day23

    #re模块方法:findall search#findall:返回所有满足匹配条件的数值,放在列表里#search : #函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象 ...

随机推荐

  1. c++ 优先级队列(priority_queue)

    从网上搜优先级队列用法,都是有些乱七八糟的,有几种用法都没说,直接贴代码.实在郁闷,于是自己在此归纳归纳. 废话不多说,直入主题. 优先级队列的核心是比较函数的实现. 比较函数有两种实现方法: 1.在 ...

  2. MongoDB基本操作总结

    MongoDB语法总结:插入操作:单条插入语法 : insertOne()示例: db.getCollection('MY_TEST').insertOne({"日期" : &qu ...

  3. 洛谷P3628 [APIO2010]特别行动队 斜率优化

    裸题,注意队列下标不要写错 Code: #include<cstdio> #include<algorithm> #include<cmath> using nam ...

  4. gradle springboot打包时忽略某个配置文件

    jar { exclude "**/bootstrap.properties" }

  5. 【JavaScript框架封装】公共框架的封装

    /* * @Author: 我爱科技论坛 * @Time: 20180706 * @Desc: 实现一个类似于JQuery功能的框架 // 公共框架 // 种子模块:命名空间.对象扩展.数组化.类型的 ...

  6. CentOS 笔记(五) 常用工具

    远程 :XShell6  ,PuTTy FPT:Xfpt ,pscp.exe

  7. 原生js,时间日期简单应用。

    一.数码时钟,滚动切换时间. <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  8. 在Eclipse中创建Maven多模块项目

    在Eclipse中创建Maven多模块项目1,创建多模块项目选择File>New>Project,打开New Project窗口,选择Maven>Maven Project,选择下一 ...

  9. httpurlconnection get String

    public static String getJSON(String url, int timeout) { HttpURLConnection c = null; try { long reque ...

  10. wpf Shake

    <Setter Property="RenderTransformOrigin" Value="0.5 0.5" /> <Setter Pro ...