Python类属性和类方法的一些差别(与C++和Java相比)
2006-09-09 16:15
731 查看
类的数据属性简单来说就是类里面的变量(相当于C++或是Java中的静态数据成员)
>>> class C:
... foo = 100
...
>>> print C.foo
>>> 100
>>> C.foo = C.foo + 1
>>> print C.foo
>>> 101
而实例属性是不需要在类定义时像C++或是Java明确给定类型的
class AddBookEntry:
'''
address book entry class
'''
def __init__(self,nm,ph):
self.name = nm
self.phone = ph
print 'Created instance for :',self.name
def updatePhone(self,newph):
self.phone = newph
print 'Updated Phone for:',self.name
Python语言里面有这样的规定:方法不能在不通过实例的情况下被调用,即方法必须被绑定(到一个实例)以后才能被直接调用,Python语言不支持静态方法(也就是静态成员函数),在需要有静态方法提供的功能时可以用一个全局函数来绕过这个限制.
对于一个类C来说,下面列出了C的全部特殊属性:
C.__name__ 类C的字符串名字
C.__doc__ 类C的文档字符串
C.__bases__ 类C的父类的列表
C.__dict__ 类C的属性
C.__module__ 对类C进行定义的模块
>>> class C:
... pass
>>> C
<class __main__.C at 0x00B2F660>
>>> C.__module__
>>> '__main__'
类C的完整授权名是"__main__.C",也就是"source_module.class_name"的形式,如果类C位于一个被导入的模块里,比如:
from mymod import C
>>>C.__module__
>>>'mymod'
>>> class C:
... foo = 100
...
>>> print C.foo
>>> 100
>>> C.foo = C.foo + 1
>>> print C.foo
>>> 101
而实例属性是不需要在类定义时像C++或是Java明确给定类型的
class AddBookEntry:
'''
address book entry class
'''
def __init__(self,nm,ph):
self.name = nm
self.phone = ph
print 'Created instance for :',self.name
def updatePhone(self,newph):
self.phone = newph
print 'Updated Phone for:',self.name
Python语言里面有这样的规定:方法不能在不通过实例的情况下被调用,即方法必须被绑定(到一个实例)以后才能被直接调用,Python语言不支持静态方法(也就是静态成员函数),在需要有静态方法提供的功能时可以用一个全局函数来绕过这个限制.
对于一个类C来说,下面列出了C的全部特殊属性:
C.__name__ 类C的字符串名字
C.__doc__ 类C的文档字符串
C.__bases__ 类C的父类的列表
C.__dict__ 类C的属性
C.__module__ 对类C进行定义的模块
>>> class C:
... pass
>>> C
<class __main__.C at 0x00B2F660>
>>> C.__module__
>>> '__main__'
类C的完整授权名是"__main__.C",也就是"source_module.class_name"的形式,如果类C位于一个被导入的模块里,比如:
from mymod import C
>>>C.__module__
>>>'mymod'
相关文章推荐
- 2.1.7 Python中一些特殊属性和方法
- 写给java程序员的c++与java实现的一些重要细微差别
- python的列表,元组以及字典的一些内置方法与属性
- selenium2java写一个遍历一些元素的个别属性的方法
- C/C++调用Java代码(属性和方法)
- Ajax - JavaScript之实现私有属性、像C++和Java一样支持基于类的继承方法之例子
- paip.函数方法回调机制跟java php python c++的实现
- JAVA-Spring-Aop拦截ACTION中的方法,但是运行时AOP会拦截我Action中所有的私有属性的一些get,set方法。
- C/C++调用Java代码(属性和方法)
- paip.函数方法回调机制跟java php python c++的实现
- 3Java程序JNI调用C++之修改属性调用方法
- paip.uapi 获取网络url内容html 的方法java php ahk c++ python总结.
- JNI进阶一 (C++调用java属性和方法,javap的使用)
- 【Java与C++之间的一些差异】之 方法重载
- Python面向对象,类,继承,多态及鸭子类型,获取类的类型,方法和属性(类似java的反射)
- Ruby Python Java C C++ 数组使用方法对比
- 三、C++操作java属性和方法
- java中Math中的一些属性和方法
- paip.uapi 获取网络url内容html 的方法java php ahk c++ python总结.
- Win7 32位系统下Sublime text 3的安装以及配置C/C++、java、python的开发环境方法