Pyhton学习——Day24
# #面向对象设计:
# 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的更多相关文章
- day24 Pyhton学习 反射
一.isinstance,type,issubclass issubclass() 这个内置函数可以帮我们判断x类是否是y类的子类 issubclass(x,y) class Base: pass c ...
- Pyhton学习——Day26
#多态:多态指的是一类事物有多种形态# import abc# class Animal(metaclass = abc.ABCMeta):# 同一类事物:动物# @abc.abstractclass ...
- pyhton 学习
官方学习文档 https://docs.python.org/3/tutorial/
- 20190320_head first pyhton学习笔记之构建发布
1.把代码nester.py放入文件夹nester中,在文件夹中再新建一个setup.py文件,文件内容如下: from distutils.core import setup setup( name ...
- Pyhton学习——Day2
Python开发IDE(工具)Pycharm.eclipse1.循环while 条件 #循环体 #条件为真则执行 #条件为假则执行break用于退出所有循环continue用于退出当前循环 2.Pyc ...
- Pyhton学习——Day28
#上下文协议:文件操作时使用with执行# with open('a.txt','w',encoding='utf-8') as f1:# with语句,为了让一个对象兼容with语句,必须在这个对象 ...
- Pyhton学习——Day27
# hasattr(obj,'name')-->obj.name# getattr(obj,'name',default = 'xxx')--->obj.name# setattr(obj ...
- Pyhton学习——Day25
#面向对象的几个方法#1.静态方法@staticmethod,不能访问类属性,也不能访问实例属性,只是类的工具包#2.类方法:@classmethod,在函数属性前加上类方法,显示为(cls)代表类, ...
- Pyhton学习——Day23
#re模块方法:findall search#findall:返回所有满足匹配条件的数值,放在列表里#search : #函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象 ...
随机推荐
- Day 12 闭包函数,装饰器
闭包函数 回顾: 1.函数对象:可以将定义在函数内的函数返回到全局使用.从而打破了函数层级限制 2.名称空间与作用域:作用域关系在函数定义阶段时就已经固定死了,与调用位置无关,即在任意位置调用函数都需 ...
- CSS - Span 下的width设置不可用?
解决:Span 下的width设置不可用? 内联元素-span有根据内容自动伸缩的能力,当需要对其宽度设定时,出现无效的情况. Demo:http://jsfiddle.net/JSDavi/ad62 ...
- docker数据卷的使用 -v --volumes--from
总结一下docker数据管理的三种方法: 1.普通的挂在数据: -v docker run -v /father/path:/child/path-v 参数会把当前系统的文件目录/father/pa ...
- Python编程:从入门到实践 - matplotlib篇 - plot & scatter
matplotlib篇 plot & scatter # filename.py 获取当前文件名方法 import sys # 当前文件名 print(sys.argv[0]) # 去除后缀后 ...
- C#中的public protected internal private
1.常见的四种方位修饰符关系下图中的protected internal是并集的关系,意思是在命名空间内是internal的,在命名空间外是protected的 2.sealed final seal ...
- BA-siemens-desigo_cc安装
1.首先安装NT3.5和NT4.0软件 2.按照以下网址的教程配置好IIS和WEBDAV环境:http://www.cnblogs.com/xiongzai/p/4126493.html 文章写的真不 ...
- [GraphQL] Mutations and Input Types
Sometimes, you want to resues object type when doing mutation, you can use 'input' type to help: inp ...
- iOS_自己定义毛玻璃效果
终于效果图: 关键代码: UIImage分类代码 // // UIImage+BlurGlass.h // 帅哥_团购 // // Created by beyond on 14-8-30. // C ...
- 初学ToggleButton 点击button,更换button背景图片;再次点击,恢复之前背景图
上方的图标,R.drawable.register_checked 是选中图片 下方的图标, R.drawable.register_unchecked 是未选中图片 默认是上方的选中效果.点击 ...
- UVA 1149 Bin Packing 二分+贪心
A set of n 1-dimensional items have to be packed in identical bins. All bins have exactly the samele ...