Python之面向对象(五)类的成员

6.8 面向对象之:类的成员

  1. 细分类的组成成员

    • 类大概分为两块区域,如下
    • class A:
          name="haha"#第一部分 静态字段(静态变量)
      
          def __init__(self):#第二部分 方法部分
              pass
          def func(self):#第二部分:方法部分
              pass
    • 具体可以细分为:
    • class A:
          company_name="haha" #静态变量 (静态字段)
          _iphone="564545"#私有静态变量(私有静态字段)
      
          def __init__(self,name,age):#特殊方法
              self.name=name#对象属性
              self._age=age#私有对象属性(私有普通字段)
          def func1(self):#普通方法
              pass
          def __func(self):#私有方法
              print(666)
          @classmethod#类方法
          def class_func(cls):
              """定义类方法,至少有一个cls参数"""
              print('类方法')
          @staticmethod#静态方法
          def static_func():
              """定义静态方法,无默认参数"""
              print("静态方法")
          @property#属性
          def prop(self):
              pass
  2. 类的私有成员
    • 对于每个类的成员而言都有两种形式:公有成员:在任何地方都能访问;私有成员,只有在类的内部才能访问
    • 私有成员和公有成员的访问限制不同:
    • 静态字段(静态属性)
      • 公有静态字段:类可以访问;类内部可以访问;派生类中可以访问
      • class C:
        
            name = "公有静态字段"
        
            def func(self):
                print C.name
        
        class D(C):
        
            def show(self):
                print C.name
        
        C.name         # 类访问
        
        obj = C()
        obj.func()     # 类内部可以访问
        
        obj_son = D()
        obj_son.show() # 派生类中可以访问
      • 私有静态字段:仅内部可以访问
      • class C:
        
            __name = "私有静态字段"
        
            def func(self):
                print C.__name
        
        class D(C):
        
            def show(self):
                print C.__name
        
        C.__name       # 不可在外部访问
        
        obj = C()
        obj.__name  # 不可在外部访问
        obj.func()     # 类内部可以访问   
        
        obj_son = D()
        obj_son.show() #不可在派生类中可以访问  
    • 普通字段(对象属性)
      • 公有普通字段:对象可以访问;类内部可以访问;派生类中可以访问
      • class C:
        
            def __init__(self):
                self.foo = "公有字段"
        
            def func(self):
                print self.foo  # 类内部访问
        
        class D(C):
        
            def show(self):
                print self.foo # 派生类中访问
        
        obj = C()
        
        obj.foo     # 通过对象访问
        obj.func()  # 类内部访问
        
        obj_son = D();
        obj_son.show()  # 派生类中访问
      • 私有普通字段:仅类内部可以访问
      • class C:
        
            def __init__(self):
                self.__foo = "私有字段"
        
            def func(self):
                print self.foo  # 类内部访问
        
        class D(C):
        
            def show(self):
                print self.foo # 派生类中访问
        
        obj = C()
        
        obj.__foo     # 通过对象访问    ==> 错误
        obj.func()  # 类内部访问        ==> 正确
        
        obj_son = D();
        obj_son.show()  # 派生类中访问  ==> 错误
    • 方法:
      • 公有方法:对象可以访问;类内部可以访问;派生类可以访问
      • class C:
        
            def __init__(self):
                pass
        
            def add(self):
                print('in C')
        
        class D(C):
        
            def show(self):
                print('in D')
        
            def func(self):
                self.show()
        obj = D()
        obj.show()  # 通过对象访问
        obj.func()  # 类内部访问
        obj.add()  # 派生类中访问  
      • 私有方法:仅类内部可以访问
      •     def __init__(self):
                pass
        
            def __add(self):
                print('in C')
        
        class D(C):
        
            def __show(self):
                print('in D')
        
            def func(self):
                self.__show()
        obj = D()
        obj.__show()  # 通过不能对象访问
        obj.func()  # 类内部可以访问
        obj.__add()  # 派生类中不能访问
    • 总结:对于这些私有成员来说,他们只能在类的内部使用,不能再类的外部以及派生类中使用.

      *ps:非要访问私有成员的话,可以通过 对象._类__属性名,但是绝对不允许!!!*

  3. 类的其他成员:这里的其他成员主要就是类方法:方法包括:普通方法、静态方法和类方法,三种方法在内存中都归属于类,区别在于调用方式不同。
    • 实例方法:

      • 定义:第一个参数必须是实例对象,该参数名一般约定为:"self",通过它来传递实例的属性和方法(也可以传类的属性和方法);
      • 调用:只能由实例对象调用
    • 类方法:
      • 定义:使用装饰器@classmethod。第一个参数必须是当前类对象,该参数名一般约定为"cls",通过它来穿打底类的属性和方法(不能传实例的属性和方法);
      • 调用:实例对象和类对象都可以调用
    • 静态方法:
      • 定义:使用装饰器@staticmethod.参数随意,没有"self"和"cls"参数,但是方法体中不能使用类或实例的任何属性和方法;
      • 调用:实例对象和类对象都可以调用

原文地址:https://www.cnblogs.com/zhangdadayou/p/11415367.html

时间: 2024-10-09 04:43:39

Python之面向对象(五)类的成员的相关文章

面向对象1——类的成员

面向对象1--类的成员 面向对象三大特征:1.封装 2.继承 3.多态 opp就是可以做到分解代码.最小化代码冗余以及对现有的代码进行定制再编写程序,而不是实地修改代码,或从头开始 一.类的成员: 1.字段:普通字段,静态字段 2.方法:普通方法,类方法,静态方法 3.属性 class Person: country = 'CN' #静态字段 __money = 99999 #私有静态字段 def __init__(self,name): self.name = name #普通字段 self.

Python之面向对象与类

本节内容 面向对象的概念 类的封装 类的继承 类的多态 静态方法.类方法 和 属性方法 类的特殊成员方法 继承层级关系中子类的实例对象对属性的查找顺序问题 一.面向对象的概念 1. "面向对象(OOP)"是什么? 简单点说,"面向对象"是一种编程范式,而编程范式是按照不同的编程特点总结出来的编程方式.俗话说,条条大路通罗马,也就说我们使用不同的方法都可以达到最终的目的,但是有些办法比较快速.安全且效果好,有些方法则效率低下且效果不尽人意.同样,编程也是为了解决问题,

05 面向对象之:类的成员

一.细分类的组成成员 大致分两块区域,如下图所示: 每个区域详细划分又可以分为: class A: company_name = '老男孩教育' # 静态变量(静态字段) __iphone = '1353333xxxx' # 私有静态变量(私有静态字段) def __init__(self,name,age): #特殊方法 self.name = name #对象属性(普通字段) self.__age = age # 私有对象属性(私有普通字段) def func1(self): # 普通方法

Python基础(十二) 类私有成员和保护成员

python中的protected和private python中用 _var :变量名前一个下划线来定义,此变量为保护成员protected,只有类及其子类可以访问.此变量不能通过from XXX import xxx 导入 __var;变量名前两个下划线来定义,此变量为私有private,只允许类本身访问,连子类都不可以访问. class perent_class(object): def __init__(self,name,protected,private): self.name =

python开发面向对象思想--类关联

为了关联各个属性.使用了uuid 工号属性.每个对象都有唯一的属性.另外为了保证对象唯一.我给每个对象的属性都做了hash生成了唯一的属性.hash过程中发现不能hash对象.hash只能hash不可变对象.其次取出对象使用了类静态方法,这样可以一次取出所有的对象,然后用户选择的时候再把uuid存储到对应的关联属性中.如果要查询uuid对应的对象是谁可以通过uuid去打开对应的文件.然后既可以获取到对应的对象了.遮样所有的对象都可以关联起来了. #!/usr/bin/env python#-*-

Python之面向对象:类的内置方法

1.def __add__(self,other): c1+c2 两个实例的加法操作就是执行__add__()方法 2.__str__(self): print一个实例的时候,执行的是__str__()这个内置方法 eg: class Vector(object): def __init__(self,a,b): self.a = a self.b = b def __str__(self): return 'Vector(%d,%d)'%(self.a,self.b) def __add__(

【Python】[面向对象编程] 类和实例

1.注:必须牢记类是抽象的模板,而实例是根据类创建出来的一个个具体的“对象”2.定义类通过class 关键字:class 后面跟着类名,类名通常都是大写开头,接着是(object),表示类是从哪里继承俩的,所有类都继承 自object. class Student(object): pass 3.通过定义一个特殊的__init__方法,在创建实例的时候,就把name,score等属性绑上去: class Student(object): def __init__(self, name, scor

面向对象:类的成员---只是特定(类的)命名空间的全局变量(函数)而已

类变量: 生命周期:全生命周期: 作用域: 1)外部可见性:修饰符确定: 2)继承可见性:修饰符确定. 原文地址:https://www.cnblogs.com/feng9exe/p/11972179.html

图解Python 【第五篇】:面向对象-类-初级基础篇

由于类的内容比较多,分为类-初级基础篇和类-进阶篇 类的内容总览图: 本节内容一览图: 今天只讲类的基础的面向对象的特性 前言总结介绍: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个"函数"供使用(可以讲多函数中公用的变量封装到对象中) 对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函数,对象是一个类的实例 实例(instance):一个对象的实例化实现. 标识(identity):每个对象的实例都需要一个可