zoukankan      html  css  js  c++  java
  • 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:PythonPythonLeaningvenvScriptspython.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:PythonPythonLeaningvenvScriptspython.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:PythonPythonLeaningvenvScriptspython.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:PythonPythonLeaningvenvScriptspython.exe F:/Python/PythonLeaning/每日学习打卡/Day24.py
    # China
    #
    # Process finished with exit code 0
    ###################################################################################################
    # 修改类属性
    # Chinese.country = 'CHINA'
    # print(Chinese.country)
    # F:PythonPythonLeaningvenvScriptspython.exe F:/Python/PythonLeaning/每日学习打卡/Day24.py
    # CHINA
    #
    # Process finished with exit code 0
    ###################################################################################################
    # 增加类属性
    # Chinese.dang ='派别'
    # print(Chinese.dang)
    # p1 = Chinese.dang
    # print(p1)
    # F:PythonPythonLeaningvenvScriptspython.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)
    #不要修改字典的底层结构






    Win a contest, win a challenge
  • 相关阅读:
    函数
    python操作文件
    POJ-2689-Prime Distance(素数区间筛法)
    POJ-2891-Strange Way to Express Integers(线性同余方程组)
    POJ-2142-The Balance
    POJ-1061-青蛙的约会(扩展欧几里得)
    Educational Codeforces Round 75 (Rated for Div. 2) D. Salary Changing
    Educational Codeforces Round 75 (Rated for Div. 2) C. Minimize The Integer
    Educational Codeforces Round 75 (Rated for Div. 2) B. Binary Palindromes
    Educational Codeforces Round 75 (Rated for Div. 2) A. Broken Keyboard
  • 原文地址:https://www.cnblogs.com/pandaboy1123/p/8479481.html
Copyright © 2011-2022 走看看