当前位置:首页 » 编程语言 » python类成员变量

python类成员变量

发布时间: 2022-08-21 18:38:49

python求解如何在类外修改类的成员变量

普通变量直接改就可以了, 如果是"__"修饰的, 最好使用property, 你可以dir一下看看它的名称被变成什么了, 一般是"__类明__成员名"

㈡ Python中类的定义规是什么

类的概念:

类 Class: 用来描述具体相同的属性和方法的对象的集合。定义了该集合中每个对象所共有的属性和方法。对象是类的示例。


类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。


实例变量:定义在方法中的变量,只作用于当前实例的类。


数据成员:类变量或者实例变量用于处理类及其实例对象的相关数据。


方法:类中定义的函数。在类内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self, 且为第一个参数,self 代表的是类的实例。


构造函数:即__init()__,特殊的方法,在对象创建的时候被自动调用。


析构函数:即__del()__,特殊的方法,在对象被销毁时被自动调用。


实例化:创建一个类的实例,类的具体对象。就是将创建的类赋值给另一个变量。理解为赋值即可,a = class(),这个过程,就叫做实例化


对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。


继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟”是一个(is-a)”关系(例图,Dog是一个Animal)。


方法重写:如果从父类继承的方法不能满足子类的需求,可以对其 进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。

————————————————

原文链接:https://blog.csdn.net/f156207495/article/details/81166252

网页链接

㈢ python怎么查看object 里的成员变量

首先通过一个例子来看一下本文中可能用到的对象和相关概念。

  • #coding:utf-8import inspectprint inspect.ismole(inspect) #Trueprint inspect.isfunction(inspect.isfunction) #Trueprint inspect.isbuiltin(sorted) #Trueprint inspect.isroutine(sorted) #True

  • 对于实现了__call__的类实例,这个方法会返回False。如果目的是只要可以直接调用就需要是True的话,不妨使用isinstance(obj, collections.Callable)这种形式。我也不知道为什么Callable会在collections模块中,抱歉!我猜大概是因为collections模块中包含了很多其他的ABC(Abstract Base Class)的缘故吧:)

  • #coding:utf-8import collectionsclass Dog(object): def __call__(self, name):#实现__call__方法就可以直接调用对象了

  • print 'i am a dog named ' , name


  • dog = Dog()

  • dog('DaHuang')print isinstance(dog, collections.Callable) #Trueprint dog.__class__.__bases__

  • 3.2. 获取对象信息

  • getmembers(object[, predicate]):这个方法是dir()的扩展版,它会将dir()找到的名字对应的属性一并返回,形如[(name, value), ...]。另外,predicate是一个方法的引用,如果指定,则应当接受value作为参数并返回一个布尔值,如果为False,相应的属性将不会返回。使用is*作为第二个参数可以过滤出指定类型的属性。

  • getmole(object):还在为第2节中的__mole__属性只返回字符串而遗憾吗?这个方法一定可以满足你,它返回object的定义所在的模块对象。

  • get{file|sourcefile}(object):获取object的定义所在的模块的文件名|源代码文件名(如果没有则返回None)。用于内建的对象(内建模块、类、函数、方法)上时会抛出TypeError异常。

  • get{source|sourcelines}(object):获取object的定义的源代码,以字符串|字符串行表返回。代码无法访问时会抛出IOError异常。只能用于

  • ㈣ 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__ 都采用了系统保留字命名法。

    ㈤ Python类变量和成员变量使用中有哪些注意事项

    之前在用python开发一个项目,发现一个bug,就是同由一个类生成的两个实例之间的数据竟然会相互影响,这让我非常不解。后来联想到java的类有类变量也有实例变量,因此翻阅了相关资料,发现python也有类似的类变量和实例变量

    ㈥ python的类的静态成员变量是怎么定义的

    classFoo:
    staticVar=0#这个就是静态变量



    如果是静态方法,可以使用@staticmethod标注。

    ㈦ python 为什么要用成员变量

    不是python用成员变量,是所有面向对象编程所需要的类里面要有成员变量。
    比如一个人有属性性别、年龄等,这些描述这个对象的属性就是类里的成员变量。

    ㈧ python类里的私有变量如何定义

    python没有私有变量,任何定义的变量都是可以直接调用的,但是一般来说,在定义的变量前后加上两个下划线,把这样的变量当成是私有变量,如下代码所示:

    classperson:
    def__init__(self):
    self.__private__=100
    p=person()
    print('__private__:',p.__private__)
    print('p包含的变量:',dir(p))

    输出:

    __private__:100
    p包含的变量:['__class__','__delattr__','__dict__','__dir__','__doc__','__eq__','__format__','__ge__','__getattribute__','__gt__','__hash__','__init__','__le__','__lt__','__mole__','__ne__','__new__','__private__','__rece__','__rece_ex__','__repr__','__setattr__','__sizeof__','__str__','__subclasshook__','__weakref__']

    ㈨ Python的类中引用成员变量必须加self吗

    Python的类中引用成员变量必须加self
    类(class)初始化之后会得到实例(instance)。 self就是用于代表初始化的到的实例。 明确地写一个self参数,使得类的方法(method)和普通的函数(function)本质上没有差异,所有的输入参数都显示地传递到方法/函数当中。 当然作为类的方法,作用的对.

    self是只有在类中才会有的。self在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。 但self的名称并不是一定的,在python中self不是关键词。在初始化函数中可以把self换成任意名字.

    ㈩ python的子类怎么访问父类的成员变量

    首先当子类继承了父类,因此子类(当继承方式为public或protected时)可以访问及改动父类的public成员,但访问或改不了私有成员和不可访问变量

    热点内容
    ios储存密码哪里看 发布:2024-09-08 09:30:02 浏览:869
    opensslcmake编译 发布:2024-09-08 09:08:48 浏览:653
    linux下ntp服务器搭建 发布:2024-09-08 08:26:46 浏览:744
    db2新建数据库 发布:2024-09-08 08:10:19 浏览:173
    频率计源码 发布:2024-09-08 07:40:26 浏览:780
    奥迪a6哪个配置带后排加热 发布:2024-09-08 07:06:32 浏览:101
    linux修改apache端口 发布:2024-09-08 07:05:49 浏览:209
    有多少个不同的密码子 发布:2024-09-08 07:00:46 浏览:566
    linux搭建mysql服务器配置 发布:2024-09-08 06:50:02 浏览:995
    加上www不能访问 发布:2024-09-08 06:39:52 浏览:811