类有数据属性和函数属性, 但对象只有数据属性。

def funName(args):'函数文档字符串'函数体class 类名:'类的文档字符串'类体创建一个类class foo:pass用类foo实例化一个对象f = foo()实例化干了什么事?
def dog(name, type, sex): # dog就是类  把一类事物相同的特征和动作整合到一起def run(dog):print("一条狗[%s],正在飞跑." % dog["name"])def eat(dog):print("一条狗[%s],正在啃骨头." % dog["name"])def init(name, type, sex):dog1 = {"name": name,"type": type,"sex": sex,"run": run,"eat":eat}return dog1return init(name, type, sex)d1 = dog("旺财","藏獒","公")  # d1就是对象
d1["eat"](d1)d2 = dog("小白","牧羊犬","母")
d2["run"](d2)

可以通过def实现面向对象,也可以通过class实现面向对象.  要理解面向对象思想. 即使使用c语言也可以是实现面向对象设计

class Dog:def __init__(self, name, gender, type):self.name = nameself.gender = gender,self.type = type# 会自动将self返回def run(self):print("一条狗[%s],正在飞跑." % self.name)def eat(self):print("一条狗[%s],正在啃骨头." % self.name)d1 = Dog("旺财","藏獒","公")
d1.run()d2 = Dog("小白","牧羊犬","母")
d2.eat()
# 类相关知识
class China:'这是一个类'capital = "北京" # 数据属性  静态变量def develop(self):  # 函数属性 也可以称为方法print("中国国立发展很快")def log():print("登录月球成功")print(dir(China)) # 查看类的属性
print(China.__dict__) # 查看类的属性字典print(China.capital)  # 取 __dict__字典['capital']的数据
print(China.__dict__['capital'])China.log()
China.__dict__['log']()
print(China.__base__)  # 所有类都有一个共同的祖先:object
print(China.__bases__) # 以元祖的形式
print(China.__module__) # 类所在的模块
print(China.__class__)   # 实例所对应的类

增删改查类数据属性,函数属性

class Fish:name = "鱼" #静态变量def __init__(self, type):self.type = typedef swim(self):print("正在海里游泳")def eat(self):print("正在吃食")f = Fish("鲸鱼")# 数据属性
# 查看类属性
print(Fish.name)# 修改类属性
Fish.name = "一条鱼"
print(Fish.name)# 增加类属性
Fish.home = "水"
print(Fish.home)# 修改类属性
del Fish.name
# print(Fish.name) 会报错 AttributeError: type object 'Fish' has no attribute 'name'print(f.home)
print(Fish.__dict__)# 函数属性
# 增加函数属性
def sleep():print("鱼正在睡觉..")Fish.sleep = sleep # 增加一个函数属性
Fish.sleep()# 修改函数属性
def eat_food():print("鱼正在欢快的吃食")Fish.eat = eat_fooddel Fish.swim # 删除函数属性
# f.swim() 调用报错

增删改查实例数据属性

class Fish:name = "鱼" #静态变量def __init__(self, type):self.type = typedef swim(self):print("正在海里游泳")def eat(self):print("正在吃食")f = Fish("鲸鱼")
f2 = Fish("鲨鱼")
# 实例数据属性增删改查
# 查看
print(f.name)
print(f.eat)
f.eat()# 增加
f.age = 1
print(f.age) # age属性只增加在f实例中
#print(f2.age)# 修改
f.age = 2
print(f.age)# 删除
del f.age
#print(f.age)
print(f.__dict__)

实例,类中的数据属性同名

class Fish:name = "鱼" #静态变量def __init__(self, type):self.type = typef = Fish("鲨鱼")
print(f.name,f.type)
print(f.__dict__)
f.name = "乌鱼" # 将name添加到f实例自己的__dict__字典中,与类没有关系
print(f.__dict__)
print(f.name, Fish.name)

注意点:

name = "鱼" #静态变量
class Fish:def __init__(self, type):self.type = type# 不是通过 实例名.name 或 类名.name调用属性的,就不从__dict__字典中找# 找到类外面的作用域中的nameprint("----",name) f = Fish("鲨鱼")
name = "鱼"
class Fish:name = "大鱼"def __init__(self, type):self.type = type# 不是通过 实例名.name 或 类名.name调用属性的,就不从__dict__字典中找# 找到类外面的作用域中的nameprint("----",name)f = Fish("鲨鱼")

python四十二:类和对象相关推荐

  1. 第四十二篇 面对对象进阶

    目录 面对对象进阶 * 补充(数据类装饰器:复制类中的数据属性) 一.类的继承 1.什么是继承 2.为什么用继承 3.对象的继承 4.继承与抽象 5.继承的应用 6.对象查找属性的顺序 二.类的派生 ...

  2. Python基础(十八): 类和对象以及它们的属性

    一.类 最简单的经典类结构 class 类名:pass 复制代码 1.定义一个类 class Money:pass 复制代码 类名规范: 驼峰命名法, 并且首字母大写 2.实例化一个对象 创建一个对象 ...

  3. 【Visual C++】游戏开发笔记四十二 浅墨DirectX教程之十 游戏输入控制利器 DirectInput专场

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...

  4. 零基础入门学Python(十二)—— 魔法方法(下)

    零基础入门学Python系列内容的学习目录→\rightarrow→零基础入门学Python系列内容汇总. 魔法方法(下) 1. 构造和析构 2. 算术运算 3. 简单定制 4. 属性访问 5. 描述 ...

  5. 【Visual C++】游戏开发笔记四十二 浅墨DirectX教程之十 游戏输入控制利器:DirectInput专场...

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接:http://blog.csdn.net/zhmxy555/article/details/8547531 作者:毛星云(浅墨) ...

  6. 左耳听风 第四十二周

    左耳听风 第四十二周 每周完成一个ARTS: 每周至少做一个 leetcode 的算法题.阅读并点评至少一篇英文技术文章.学习至少一个技术技巧.分享一篇有观点和思考的技术文章.(也就是 Algorit ...

  7. 零基础入门学Python(十二)—— 魔法方法(上)

    零基础入门学Python系列内容的学习目录→\rightarrow→零基础入门学Python系列内容汇总. 魔法方法(上) 1. 构造和析构 1.1 _ _ init _ _(self[, ...]) ...

  8. 【Visual C++】游戏开发笔记四十二 浅墨DirectX教程之十 游戏输入控制利器:DirectInput专场

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/details/8547531 作者:毛星云(浅墨 ...

  9. maya批量命名插件_教你玩转MAYA的四十二精华造诣(第一期)

    最近在整理文档时发现我收藏了一篇关于MAYA应用技巧的文章,突然有兴趣看了看,结果发现老版本MAYA中的某些内容很多已经无法应用于新版本.我又上网查了一下,结果发现网上好多帖子和我收藏的这篇内容基本一 ...

最新文章

  1. 通过xmanager远程连接redhat linux as 5
  2. Javascript创建数组的方式你了解了吗
  3. 廖雪峰说python_廖雪峰官网Python部分的疑问及解决
  4. 张洪斌 html css,网页设计与制作教学课件作者HTML+CSS+JavaScript张洪斌教学资源KC11120100008_设计文档课件.doc...
  5. python什么元素为真_如何使用Python基础内置函数
  6. 第六部分 PHP实例
  7. php 获取config,PHP MVC如何自动调用config?
  8. HTTP MIME Types
  9. 不同版本的散点图矩阵
  10. react-native 解决“Could not get BatchedBridge...” 的问题
  11. doc 问卷调查模板表_幼儿园家长问卷调查表
  12. TNS-12547和TNS-12555错误解决
  13. Docker资源控制的Cgroup--CPU权重等--Block IO、bps和iops 的限制详细操作
  14. Kali使用中文输入法
  15. sql server数据修复语句
  16. 转:史上最强《软件工程师面试题》答案
  17. 关键链方法的多项目监控技术
  18. Android【WebView】
  19. 微信后台架构浅析--读写扩散技术
  20. MODIS数据下载方法

热门文章

  1. C的指针疑惑:C和指针8数组
  2. Oracle中对现有表增加列
  3. input type=range标签用法实例代码
  4. 《算法导论》读书笔记(七)
  5. pywebQQ-----linux下webQQ的替换者
  6. Data Guard搭建困境突围(一)
  7. Android文档-开发者指南-第一部分:入门-中英文对照版
  8. linux的特殊权限SUID、SGID和SBIT
  9. 成员函数指针与高性能的C++委托(三)
  10. 访问MS Access 系统表 MSysObjects ,在SQL SERVER 2005中访问