pythonclass命名
Ⅰ python关于class问题 小白求解答
Python编程中类的概念可以比作是某种类型集合的描述,如“人类”可以被看作一个类,然后用人类这个类定义出每个具体的人——你、我、他等作为其对象。类还拥有属性和功能,属性即类本身的一些特性,如人类有名字、身高和体重等属性,而具体值则会根据每个人的不同;功能则是类所能实现的行为,如人类拥有吃饭、走路和睡觉等功能。具体的形式如下:
#例:类的概念
class人类:
名字='未命名'#成员变量
def说话(内容):#成员函数
print内容#成员变量赋初始值
某人=人类()#定义一个人类对象某人
某人.名字="路人甲"
某人.说话('大家好')#路人甲说话
>>>大家好!#输出
Python中定义和使用类的形式为:class 类名[(父类名)]:[成员函数及成员变量],类名为这个类的名称,而父类名为可选,但定义父类名后,子类则拥有父类的相应属性和方法。在用类定义成对象时,会先调用__init__构造函数,以初始化对象的各属性,类的各属性(成员变量)均可以在构造函数中定义,定义时只要加上对象指针就好了。而在对象销毁时,则会调用__del__析构函数,定义类的成员函数时,必须默认一个变量(类似于C++中的this指针)代表类定义的对象本身,这个变量的名称可自行定义,下面例子将使用 self变量表示类对象变量 。
#例:类定义及使用
classCAnimal:
name='unname'#成员变量
def__init__(self,voice='hello'):#重载构造函数
self.voice=voice#创建成员变量并赋初始值
def__del__(self):#重载析构函数
pass#空操作
defSay(self):
printself.voice
t=CAnimal()#定义动物对象t
t.Say()#t说话
>>hello#输出
dog=CAnimal('wow')#定义动物对象dog
dog.Say()#dog说话
>>wow#输出
Ⅱ python 变量下划线命名规则
单下划线和双下划线在Python变量、类、模块命名中都有不懂的含义,名称中都各有其含义。有一些是程序员之间约定俗成的,Python解释器不用强制其执行,但有些Python解释器会强制执行。
本文从以下几种不同使用方式,对下划线的用途和含义进行说明:
1)变量
通常用于类内部变量的命名,表明该变量是该类私用变量,外部不要去访问它,但也是可以访问到的。这只是程序员之间的一个约定俗成的做法,Python解释器本身不会对它进行限制。
我们创建一个类:
实例化A,并访问它的变量,aa._bar 也是可以访问的,但既然人家这么命名了,外部最好不要去访问了
2)函数和模块
和变量一样,这是一个私有函数,不建议外部程序调用该函数。
我们创建一个脚本aa.py, 里面有2个函数 _aa,bb:
导入aa,分别调用函数 _aa和bb,bb 可以调用,但显示无 _aa
3)类
同变量和函数一样,都是私有变量,外部最好不要调用
用来避免和Python内置函数命名产生冲突,PEP8解释了这个约定。
如class或def不能用作Python中的变量名称,如果之间用,会提示错误。如果你非要用它,可以 使用 class_或 def_。
还有一些函数名,如chr,chr()是Python内置函数,用来表示ascii码对应的字符他的输入时数字,可以用十进制,也可以用十六进制。如果你非要它来表示染色体,可以用chr_来代替。当然如果你直接使用它作为变量名,它也不会报错,但最好不要这样使用。
在python中定义私有变量只需要在变量名或函数名前加上 "__" (两个下划线),那么这个函数或变量就会成为私有的了。
在内部,python使用一种 name mangling 技术,将__var 替换成 _classname__var,因此在外部调用__var会找不到,代替它的是_classname_var。这种处理方式叫做名称修饰(name mangling):解释器更改变量的名称,以便在类被扩展的时候不容易产生冲突。
由双下划线前缀和后缀包围的变量,不会应用名称修饰,因此不会被Python解释器修改:
我们创建一个类B,dir() 查看类的所有属性,发现 存在 __aa__
但是,Python保留了有双前导和双末尾下划线的名称,用于特殊用途。 如,__init__对象构造函数,或 __call__ 它使得一个对象可以被调用。所有我们尽量不要使用这种方式命名变量,以免和Python解释器内置的函数发生冲突。
_ 不加任何其他字符,单独作为一个名字,用来表示某个临时的或者无关紧要的变量。
举例1: 表示一个临时变量 。在下面的循环中,我们不需要获取循环的索引,只是print n 行 'Hello World',可以用 "_" 来表示它只是一个临时值:
举例2: 表示一个不关心的变量 ,仅仅是个占位符变量,用来占位。mlist 列表中,我只想获得1,2,4 位的变量,那 3 和 5 可以 用 _ 来占位
举例3 : 表示由解释器评估的最近一个表达式的结果 ,方便进行查看。
Ⅲ Python 的类的下划线命名有什么不同
首先是单下划线开头,这个被常用于模块中,在一个模块中以单下划线开头的变量和函数被默认当作内部函数,如果使用 from a_mole
import * 导入时,这部分变量和函数不会被导入。不过值得注意的是,如果使用 import a_mole 这样导入模块,仍然可以用
a_mole._some_var 这样的形式访问到这样的对象。
在 Python
的官方推荐的代码样式中,还有一种单下划线结尾的样式,这在解析时并没有特别的含义,但通常用于和 Python
关键词区分开来,比如如果我们需要一个变量叫做 class,但 class 是 Python 的关键词,就可以以单下划线结尾写作 class_。
双
下划线开头的命名形式在 Python 的类成员中使用表示名字改编 (Name Mangling),即如果有一 Test 类里有一成员
__x,那么 dir(Test) 时会看到 _Test__x 而非
__x。这是为了避免该成员的名称与子类中的名称冲突。但要注意这要求该名称末尾没有下划线。
双下划线开头双下划线结尾的是一些
Python 的“魔术”对象,如类成员的 __init__、__del__、__add__、__getitem__ 等,以及全局的
__file__、__name__ 等。 Python 官方推荐永远不要将这样的命名方式应用于自己的变量或函数,而是按照文档说明来使用。
另外单下划线开头还有一种一般不会用到的情况在于使用一个 C 编写的扩展库有时会用下划线开头命名,然后使用一个去掉下划线的 Python 模块进行包装。如 struct 这个模块实际上是 C 模块 _struct 的一个 Python 包装。
更多关于命名的内容可以参考 PEP 8 《代码风格指南》的 Name Conventions 一节:http://www.python.org/dev/peps/pep-0008/
需要说明的是,由于这份文档看起来经过多次修改,双下划线开头的用法似乎曾经如 @makestory 所说,建议为类的私有成员,至少啄木鸟社区的 PEP 8 译文是这样写的,但 PEP 8 当前的官方版本中并没有体现。
Ⅳ python类的定义与使用是什么
类Class:用来描述具体相同的属性和方法的对象的集合。定义了该集合中每个对象所共有的属性和方法。对象是类的示例。
类定义完成时(正常退出),就创建了一个 类对象。基本上它是对类定义创建的命名空间进行了一个包装;我们在下一节进一步学习类对象的知识。原始的局部作用域(类定义引入之前生效的那个)得到恢复,类对象在这里绑定到类定义头部的类名(例子中是 ClassName )。
基本语法
Python的设计目标之一是让代码具备高度的可阅读性。它设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观。它不像其他的静态语言如C、Pascal那样需要重复书写声明语句,也不像它们的语法那样经常有特殊情况和意外。
以上内容参考:网络-Python
Ⅳ Python中class和def的理解
class: 是一个面向对象的类,用来描述具有相同的属性和方法的对象的集合,类可以起到模版的作用, 所以在创建实例的时候,可以将我们认为必要的属性填写进去,方法__init__ 第一个参数是self,在方法内部
self表示创建实例本身 ,所以就可以把各种属性绑定到self
参数实例化后,类下的所有方法,都可以调用实例参数,格式,self.参数名,实例如下
调用: 在类中定义函数,类和函数都可作为一个模块保存。要调用类或函数只需要import这个类或函数所在模块名称就可以了。在一个模块当然可以访问另外一个模块的类。
Ⅵ python 怎么定义class
class UserList(args): queryset = User.objects.all() serializer_class = UserSerializer
Ⅶ Python命名规则与注释风格
名称不要缩写!!!
名称不要缩写!!!
名称不要缩写!!!
包命名:小写,下划线_连接单词
模块命名:小写,下划线_连接单词
类命名:双驼峰,MyClass
函数命名:小写,下划线_连接单词
全局变量:每个字母大写
注释很重要,要注明函数或类的功能,参数的数据类型、含义等。
注释模板:
注释的作用:
Python有句话是do not repeat yourself,即不要做重复的事,因此出现了类或函数的封装和继承,基于此可提高代码的重复利用性。
Ⅷ python 变量的命名
createPlot.ax1 是表示: ax1 是函数 createPlot 的一个属性,这个可以在函数里面定义也可以在函数定义后加入也可以
example:
def fun():
fun.x =1
当你在python的命令窗口下,运行一次fun()后,x 就是 fun()的一个属性,你在命令窗口下输入
fun.x 后面会显示 1
也可以 在 函数定义完后加入 属性 如 fun.y = 2,在使用 dir(fun),你就会发现fun有 x,y 这两个属性
Ⅸ 关于在python中命名一个对象的方法
其中一个方法,python2.6.4下执行通过:
class A:
pass
names = ['a', 'b', 'c']
for n in names:
exec('%s = A()' % n)
print a, b, c
输出:
<__main__.A instance at 0x01CD0170> <__main__.A instance at 0x01CD02D8> <__main__.A instance at 0x01CD0148>
Ⅹ python怎样命名变量的
模块名:
小写字母,单词之间用_分割
ad_stats.py
包名:
和模块名一样
类名:
单词首字母大写
AdStats
ConfigUtil
全局变量名(类变量,在java中相当于static变量):
大写字母,单词之间用_分割
NUMBER
COLOR_WRITE
普通变量:
小写字母,单词之间用_分割
this_is_a_var
实例变量:
以_开头,其他和普通变量一样
_price
_instance_var
私有实例变量(外部访问会报错):
以__开头(2个下划线),其他和普通变量一样
__private_var
专有变量:
__开头,__结尾,一般为python的自有变量,不要以这种方式命名
__doc__
__class__
普通函数:
和普通变量一样:
get_name()
count_number()
ad_stat()
私有函数(外部访问会报错):
以__开头(2个下划线),其他和普通函数一样
__get_name()
————————————————————————————————————————————————————————————————————
文件名
全小写,可使用下划线
包
应该是简短的、小写的名字。如果下划线可以改善可读性可以加入。如mypackage。
模块
与包的规范同。如mymole。
类
总是使用首字母大写单词串。如MyClass。内部类可以使用额外的前导下划线。
函数&方法
函数名应该为小写,可以用下划线风格单词以增加可读性。如:myfunction,my_example_function。
*注意*:混合大小写仅被允许用于这种风格已经占据优势的时候,以便保持向后兼容。
函数和方法的参数
总使用“self”作为实例方法的第一个参数。总使用“cls”作为类方法的第一个参数。
如果一个函数的参数名称和保留的关键字冲突,通常使用一个后缀下划线好于使用缩写或奇怪的拼写。
全局变量
对于from M import *导入语句,如果想阻止导入模块内的全局变量可以使用旧有的规范,在全局变量上加一个前导的下划线。
*注意*:应避免使用全局变量
变量
变量名全部小写,由下划线连接各个单词。如color = WHITE,this_is_a_variable = 1
*注意*:
1.不论是类成员变量还是全局变量,均不使用 m 或 g 前缀。
2.私有类成员使用单一下划线前缀标识,多定义公开成员,少定义私有成员。
3.变量名不应带有类型信息,因为Python是动态类型语言。如 iValue、names_list、dict_obj 等都是不好的命名。
常量
常量名所有字母大写,由下划线连接各个单词如MAX_OVERFLOW,TOTAL。
异常
以“Error”作为后缀。
缩写
命名应当尽量使用全拼写的单词,缩写的情况有如下两种:
1.常用的缩写,如XML、ID等,在命名时也应只大写首字母,如XmlParser。
2.命名中含有长单词,对某个单词进行缩写。这时应使用约定成俗的缩写方式。
例如:
function 缩写为 fn
text 缩写为 txt
object 缩写为 obj
count 缩写为 cnt
number 缩写为 num,等。
前导后缀下划线
一个前导下划线:表示非公有。
一个后缀下划线:避免关键字冲突。
两个前导下划线:当命名一个类属性引起名称冲突时使用。
两个前导和后缀下划线:“魔”(有特殊用途)对象或者属性,例如__init__或者__file__。绝对不要创造这样的名字,而只是使用它们。
*注意*:关于下划线的使用存在一些争议。
Python 用下划线作为变量前缀和后缀指定特殊变量。
_xxx 不能用'from mole import *'导入
__xxx__ 系统定义名字
__xxx 类中的私有变量名
核心风格:避免用下划线作为变量名的开始。
因为下划线对解释器有特殊的意义,而且是内建标识符所使用的符号,我们建议程序员避免用下划线作为变量名的开始。一般来讲,变量名_xxx被看作是“私有的”,在模块或类外不可以使用。当变量是私有的时候,用_xxx 来表示变量是很好的习惯。因为变量名__xxx__对Python 来说刑厥夂澹杂谄胀ǖ谋淞坑Φ北苊庹庵置绺瘛?br>
"单下划线" 开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量;
"双下划线" 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。
以单下划线开头(_foo)的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用“from xxx import *”而导入;以双下划线开头的(__foo)代表类的私有成员;以双下划线开头和结尾的(__foo__)代表python里特殊方法专用的标识,如 __init__()代表类的构造函数。
特定命名方式
主要是指 __xxx__ 形式的系统保留字命名法。项目中也可以使用这种命名,它的意义在于这种形式的变量是只读的,这种形式的类成员函数尽量不要重载。如
class Base(object):
def __init__(self, id, parent = None):
self.__id__ = id
self.__parent__ = parent
def __message__(self, msgid):
# …略
其中 __id__、__parent__ 和 __message__ 都采用了系统保留字命名法。