Python中,类的特点:

 #encoding:utf-8
class Parent(object):
x=1 #x是Parent类的属性(字段)
def __init__(self):
print 'creating Parents instance..' class Child1(Parent):
pass class Child2(Parent):
def __init__(self):
print 'creating Child2 instance..' class Child3(Parent):
def __init__(self):
Parent.__init__(self)#若不调用这一行,将不执行父类的构造函数
print 'creating Child3 instance..'
class MyClass():
def printMe(self):
print 'gege' if __name__=='__main__': '''类属性和实例属性的区别'''
p=Parent()
p.x=11
print Parent.x,p.x
Parent.x=5
print Parent.x,p.x
print '-------------------' '''子类可以通过继承获得父类的属性'''
print Child1.x
print '-------------------' '''观察构造函数的调用'''
c1=Child1()#Child1本身没有构造函数,将调用父类的构造函数
print '-------------------'
c2=Child2()#Child2重写了构造函数,将调用其自身的构造函数,且不再调用父类的构造函数
print '-------------------'
c3=Child3()#Child2重写了构造函数,并且在构造函数内调用了父类的构造函数

输出:

creating Parents instance..
1 11
5 11
-------------------
5
-------------------
creating Parents instance..
-------------------
creating Child2 instance..
-------------------
creating Parents instance..
creating Child3 instance..

Python中类的方法又有怎样的特点?

 #encoding:utf-8
class MyClass():
def doPrint(self):
print 'doPrint invoked..' if __name__=='__main__':
doPrint()#编译不通过,提示 NameError: name 'doPrint' is not defined
MyClass.doPrint()#编译通过,但运行时报错,提示 TypeError: unbound method doPrint() must be called with MyClass instance as first argument (got nothing instead)
MyClass().doPrint()#正确运行,打印出 doPrint invoked..

以上测试说明Python中的类有以下几个特点:

1. Python也有类似Java的静态属性(类属性),但是不用static关键字修饰。那么如何区分类属性还是实例属性?参考第2条

2. Python类中的属性若写成 "类名.属性" 形式,就是类属性,若写成"实例.属性" 形式,就是实例的属性,两者互不干扰(修改类的属性的值,不会改变实例属性的值,反之亦然)

3. 构造函数:如果子类没有,就用父类的;子类有的,就只用子类的,不再调用父类的(这与C++不同),若想调用父类的构造函数必须显式的写成 "父类.__init__(self,其他参数)",其中的self 即子类实例自身。

4. 没有类似Java的类方法(用static修饰),Python类中的方法必须由实例来调用(即所谓的绑定机制,方法必须和实例绑在一起才能调用),"类名.方法"这种写法,语法上没错,但不能执行。

Python类的特点 (1):构造函数与方法的更多相关文章

  1. python 类的私有变量和私有方法

    #!/usr/bin/env python # -*- coding:utf-8 -*- # @Time : 2017/11/08 8:46 # @Author : lijunjiang # @Fil ...

  2. Python 类的私有属性与私有方法

    1.隐藏的使用场景 在Python类中,有些属性和方法只希望在对象的内部被使用,而不希望在外部被访问到, 2.定义方式, 在属性名或方法名前增加两个下划线,定义的就是私有属性或方法 #其实这仅仅这是一 ...

  3. python类中的__init__和__new__方法

    Python中类: Python中在创建类的过程中最先调用的不是__init__方法而是__new__方法,__new__方法是一个静态方法,在创建一个类对象时其实是通过__new__方法首先创建出一 ...

  4. Python: 类中为什么要定义__init__()方法

    学习并转自:https://blog.csdn.net/geerniya/article/details/77487941 1. 不用init()方法定义类 定义一个矩形的类,目的是求周长和面积. c ...

  5. 分别给Python类和实例增加属性和方法

    #定义一个类Student class Student(object): pass #给类增加一个属性name Student.name = 'xm' print Student.name # xm ...

  6. python类中的双下划线方法

    __getitem__,__setitem__和__delitem__ 实现了对象属性的字典化操作. class Person: def __init__(self, name, age, hobby ...

  7. Python类的__getitem__和__setitem__特殊方法

    class testsetandget:    kk = {};      def __getitem__(self, key):          return self.kk[key];      ...

  8. python 类属性和实例属性、方法 访问权限问题

    class Animal: cls_attr = 'cls_attr' _cls_attr = '_cls_attr' __cls_attr = '__cls_attr' def __init__(s ...

  9. python类:magic魔术方法

    http://blog.csdn.net/pipisorry/article/details/50708812 魔术方法是面向对象Python语言中的一切.它们是你可以自定义并添加"魔法&q ...

  10. (转)python类:magic魔术方法

    原文:https://blog.csdn.net/pipisorry/article/details/50708812 版权声明:本文为博主皮皮http://blog.csdn.net/pipisor ...

随机推荐

  1. ecshop 默认图处理

    function get_banner_path($img) { $img = empty($img) ? C('no_picture') : $img; return $img;}

  2. Shader_2[杂]

    三个shader,平滑滤波.锐化滤波和高斯模糊 http://tieba.baidu.com/p/3791791688 Unity3D研究院之自制批量修改Shader插件(五十七) http://ww ...

  3. MySQL 视图的基础操作(五)

    1.为什么使用视图:     为了提高复杂SQL语句的复用性和表操作的安全性(例如:工资字段不想展示给所有能查看该查询结果的人),MySQL提供了视图特性.所谓视图,本质上是一种虚拟表,其内容与真实的 ...

  4. apache struts 2 任意代码执行漏洞

    漏洞检测地址:http://0day.websaas.cn 漏洞利用工具,如下: 漏洞利用,如下: step1 step2 step3 提权思路,如下: 1.开启虚拟终端,执行命令,但是,提示“连接被 ...

  5. 数据库逆向框架代码生成工具:MyBatis Generator的使用

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration ...

  6. 【转】 使用maven创建web项目

    生成kafka java客户端时,参考的资料!!!文章来源:http://blog.csdn.net/zhshulin/article/details/37921705 目前做的项目使用的是MAVEN ...

  7. c# 获取系统时间

    //获取日期+时间DateTime.Now.ToString();             // 2008-9-4 20:02:10DateTime.Now.ToLocalTime().ToStrin ...

  8. Java中Office(word/ppt/excel)转换成HTML实现

    运行条件:JDK + jacob.jar + jacob.dll 1) 把jacob.dll在 JAVA_HOME\bin\ 和 JAVA_HOME\jre\bin\ 以及C:\WINDOWS\sys ...

  9. 网络安全&信息安全&系统安全常用名词汇总

    拖库(脱裤) 隐写术 拖库(脱裤) 隐写术 拖库(脱裤) 隐写术 拖库(脱裤) 隐写术

  10. 基础知识系列☞MSSQL→约束

    遇到一个数据库设计很渣的系统··· 本来一个约束就能解决的问题·以前建库的时候也不设计好···