类的几个装饰器方法:

@classmethod (类方法):使之无法访问实例变量

class Animal(object):
def __init__(self, name):
self.name = name # 实例变量 sleep = '睡觉觉后。。' # 类变量 @classmethod # 加上此装饰器便不能访问实例变量,但是可以访问类变量
def eat(self):
print('%s 动物要吃东西。。' % self.sleep) A = Animal('狗类')
Animal.sleep # 直接访问类变量
Animal.eat() # 调用
A.eat()

classmethod

睡觉觉后。。 动物要吃东西。。
睡觉觉后。。 动物要吃东西。。

result

@staticmethod (静态方法):里面就不能有变量了,(和实例就没有关系了),不能访问类变量和实例变量

静态方法  :  作为一个工具箱,里面访问不了外面,类也访问不到里面的东西,只能通过自己把自己传进去,只是通过类可以找到它

class Animal(object):
def __init__(self, name):
self.name = name # 实例变量 sleep = '睡觉觉后。。' # 类变量 @staticmethod # 静态方法
def drink(): # 此处加入self将没有任何意义
print('%s 动物要喝水水。。') # 不能‘访问’实例变量以及类变量 @staticmethod # 静态方法
def drink1(self):
print('%s 动物要喝水水。。' % self.name) # 可以传入值 A = Animal('狗类')
A.drink()
A.drink1(A) # 值的传入

staticmethod

%s 动物要喝水水。。
狗类 动物要喝水水。。

result

@property (属性):把类中方法变成了一个属性,不能给里面传值,也不能删除里面的值

class Animal(object):
def __init__(self, name):
self.name = name
self.num = None @property # 变成了一个属性
def eat(self):
print('%s 动物要吃饭饭。。' % self.name) @property
def vel(self):
return self.num @vel.setter
def vel(self, num):
self.num = num # 通过.setterf给里面赋值
print('改过的值:', self.num) @vel.deleter # 通过.deleter从里面删除东西
def vel(self):
print('---------')
del self.num # 通过这个才能彻底从里面删除变量
# print(self.num) A = Animal('狗类')
A.eat # 以访问属性的方式,访问eat
print(A.vel)
A.vel = 3
del A.vel # 删除调用

property

狗类 动物要吃饭饭。。
None
改过的值: 3
---------

result

私有属性:__名字:直接调用不行但是可以通过_类名__名字 可以访问

类的部分特殊成员:                                                                                                    

1.__doc__:输出类的描述信息

2.__module__:当前操作的对象在那个模块

3.__class__:当前操作的对象的类是什么

4.__init__:构造方法,通过类创建对象时(一实例化后),自动触发执行

5.__del__:析构方法,当对象在内存中被释放时, 自动触发执行,在所有程序都执行完,自动触发执行

6.__call__:实例化后,对象后面加括号,触发执行此方法

7.__dict__:以字典的形式返回类里的成员变量

8.__str__:如果一个类中定义了此方法,那么在打印对象时,默认输出该方法的返回值

9.__iter__:用于迭代器,之所以列表、字典、元组可以进行for循环,,是因为类型内部定义了此方法

10.__new__:构造了类,如果重写了这个方法,就不会自动触发调用__init__方法了

class Animal(object):
'''我是一朵小花花,啦啦啦。。'''
def __init__(self, speak):
self.speak = speak
print('%s yes >_< ' % self.speak)
self.n = 5 def __str__(self):
return '小花花长大大。。'
A = Animal('oh!')
print(A.__doc__) # 类中的描述信息
print(A.__dict__) # 打印类里的实例变量
print(A) # 自动触发的__str__

部分实现

oh! yes >_<
我是一朵小花花,啦啦啦。。
{'speak': 'oh!', 'n': 5}
小花花长大大。。

result

具体参照:http://www.cnblogs.com/wupeiqi/p/4766801.html

Python_面向对象_类2的更多相关文章

  1. Python_面向对象_类1

    面向对象:减少重复代码,提高效率,比函数式编程更高效 类的创建: 实例属性又称:成员变量,成员属性(或者字段) 面向对象的三大特性: 一.封装 把客观事物封装为抽象的类,并对外只暴露一个可用接口 使用 ...

  2. python中面向对象_类_对象的概念与定义

    1. 面向对象的概念,面向对象是一种编程思想. 是对现实世界中一类事物的抽象,在编程中可以理解为是一种建立现实世界事物的模型 2.  面向对象和面向过程的区别: 面向过程关注的是完成工作的步骤. 面向 ...

  3. java语言基础(四)_面向对象_类_对象_封装_构造

    面向对象 Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下,使用Java语言去设计.开发计算机程序. 这里的对象泛指现实中一切事物,每种事物都具备 ...

  4. Java核心基础第5篇-Java面向对象_类和对象

    Java面向对象之类和对象 一.面向对象概述 Java是完全的面向对象编程(Object Oriented Programming),简称OOP. 面向对象编程的思维方式更加符合大家的日常生活,因为我 ...

  5. python_面向对象_组合

    组合: 一个类的对象是另外一个类对象的属性 # 组合 # 一个类的对象是另一个类对象的属性 # 什么时候使用组合:当两个类之间的关系是 :什么有什么的关系 : 班级有学生 学生有班级 班级有课程 图书 ...

  6. Python_面向对象_单例模式

    class A(object): pass a1 = A() a2 = A() print(a1 == a2)print(id(a1))print(id(a2)) 结果: False 23257231 ...

  7. 黑马程序员_Java面向对象_内部类

    6.面向对象_内部类 1.内部类定义 内部类:将一个类定义在另一个类里面,对里面那个类就称为内部类.(内置类.嵌套类)内部类可以被私有修饰. 2.内部类访问规则 访问特点: 内部类可以直接访问外部类中 ...

  8. 【转】Python之面向对象与类

    [转]Python之面向对象与类 本节内容 面向对象的概念 类的封装 类的继承 类的多态 静态方法.类方法 和 属性方法 类的特殊成员方法 继承层级关系中子类的实例对象对属性的查找顺序问题 一.面向对 ...

  9. OC学习总结之面向对象和类

    OC学习总结之面向对象和类   Objective-c是c语言的母集合,它的原意就是在原始的c语言的主体上加入面向对象的特性.1.面向对象和面向过程  面向对象和面向过程是编程的两种思考方式.面向对象 ...

随机推荐

  1. scrapy 在迭代爬取时被拒 offsite 增加dont_filter=True

  2. linux云主机cpu一直很高降不下来,系统日志报nf_conntrack: table full, dropping packet.

    在启用了iptables web服务器上,流量高的时候经常会出现下面的错误: ip_conntrack: table full, dropping packet 这个问题的原因是由于web服务器收到了 ...

  3. python之__call__()

    __call__ 在Python中,函数其实是一个对象: >>> f = abs >>> f.__name__ 'abs' >>> f(-123) ...

  4. nginx的location、rewrite玩法详解

      1. location正则写法 一个示例: 1234567891011121314151617181920212223242526272829303132333435363738394041424 ...

  5. Glide高级详解—缓存与解码复用

    Glide 使用简明的流式语法API,大多数情况下,可能完成图片的设置你只需要:Glide.with(activity) .load(url) .into(imageView); 默认情况下,Glid ...

  6. swift 学习- 23 -- 扩展

    // 扩展 就是为一个已有的 类, 结构体, 枚举, 或者 协议类型添加新功能, 这包括在没有权限获取 原始代码的情况下 扩展类型的能力 (即 逆向建模), 扩展和 OC 中的分类类似, (与 OC ...

  7. Oracle中如何查询CLOB字段类型的内容

    注:本文来源于:<Oracle中如何查询CLOB字段类型的内容> 语法 select * from table_name where dbms_lob.instr(字段名(clod类型), ...

  8. Confluence 6 配置 Windows 服务

    当你使用 Start Confluence Automatically on Windows as a Service 的方式启动的时候,你有下面 2 种方式来配置你的系统属性:通过 command ...

  9. Confluence 6 数据库表和参考

    扩展下面的链接来显示主要的表格和每一个表格的外键.  单击这里来显示/隐藏表格... AO_9412A1_AOUSER ID AO_9412A1_USER_APP_LINK USER_ID fk_ao ...

  10. automaticallyAdjustsScrollViewInsets 详解

    automaticallyAdjustsScrollViewInsets 自动缩进 20 像素 默认是 True 项目中如果有UIViewController 和ScrollView 一般都要设置成f ...