python-面向对象(四)——类成员的访问方式汇总

类成员的访问方式

#!/usr/bin/env python
# _*_coding:utf-8 _*_

class pepole(object):

‘‘‘This is  __doc__ information!!!‘‘‘

    country = "CHINA"   #静态字段 存在类里
    __city = "BeiJing"   #私有静态字段

    def siyou(self):     #私有字段在内部设置方法可以访问
        return pepole.__city

    def __init__(self,name,age,weight):
        self.name = name
        self.age = age    #普通字段,动态字段,对象字段  存在对象里
        self.weight = weight
        self.__name2 = "FUCK"   #私有普通字段,通过内部间接访问,也可通过特殊方法访问

    def __call__(self, *args, **kwargs):
        print ‘This is __call__!!!‘

    def func(self):         #括号里至少一个参数,可以多个
        print self.__name2  #内部简介访问私有字段
        return  "123"

    def __infunc(self):   #私有方法,通过内部简介访问
        print "This is __infunc!"

    def run_infunc(self):  #通过内部间接的访问私有方法

        self.__infunc()

    @classmethod     #类方法
    def class_func(cls):     #括号里只能有一个参数 cls
        return  "class_method"

    @staticmethod   #静态方法括号里不需要参数(),可以有个多参数
    def sts():
        print "This is staticmethod"

    @staticmethod      #静态的私有方法,属于类,内部间接访问
    def __static_func():    #静态方法括号里不需要参数(),可以有个多参数
        print "This is __static_func"

    def run_static(self):  #简介访问静态私有方法
        pepole.__static_func()

    @property     #属性把一个方法伪造成一个字段、一个属性,像字段那样的属性而不是一个功能
    def att(self):    #只能有一个self参数
        return  "property"

    def __str__(self):
        return "This is __str__"

#class Son(pepole):  #继承people的派生类,不能拿到父类中的私有方法或字段
#    def show(self):
        #print pepole.__city
#        pass

obj = pepole("chenchao",18,70)

print obj.__doc__#查看类里的注释信息

obj()   #执行__call__ 方法  在对象的后面加()

printobj.country    #执行静态字段

print obj.name    #执行字段self.name = "chenchao"

print obj.siyou()  #内部访问间接的调用私有字段  __city = "Beijing"

print obj.func()   #执行普通方法    def func(self):

print pepole.class_func()   #类方法 调用类方法   @classmethod

pepole.sts()     #调用静态方法    @staticmethod

print obj.att      #执行属性的方法,不带括号 @property

obj.run_infunc()   #执行私有方法 (间接访问) def __func_method()

obj.run_static()   #执行静态的私有方法(间接访问)

print pepole.__dict__ #获取类的成员,即:静态字段,方法

print obj.__dict__  #获取obj对象的成员  普通字段,私有普通字段

print obj   #类中定义了__str__方法,打印对象默认输出方法的返回值
print str(obj)   #自动去类中找__str__方法并得到返回值

from test import pepole

obj2 = pepole("zhangsan",22,66)

print  obj2.__module__   #表示当前操作的对象在那个模块
print obj2.__class__     #表示当前操作的对象的类是什么

print obj._pepole__name2  #特殊方法访问对象中的私有普通字段
print pepole._pepole__city #特殊方法访问类中的私有静态字段
obj._pepole__infunc()  #特殊方法访问类中的私有方法
#obj2 = Son()
#obj2.show()   #如果是继承的关系,那么派生类不能访问父类中的私有方法或私有字段
  

  

isinstance()  issubclass()

#!/usr/bin/env python
# _*_coding:utf-8 _*_

a = 10

class A():
    print  "This is class A"

class B(A):
    print "This is class B"

w = B()

print isinstance(w,B)       #True    判断对象w 是否是类B的对象
print isinstance(w,A)       #True    类的基类也可行
print isinstance(a,int)     #True

print issubclass(B,A)       #True    判断B是A的派生类或 A是B的基类
print isinstance(B,int)     #False

isinstance(obj=对象, cls=类)           

检查obj是否是类 cls 的对象       is instance :实例

issubclass(sub=子类, super=父类)

检查sub类是否是 super 类的派生类   is subclass:子类

时间: 2024-08-04 06:20:23

python-面向对象(四)——类成员的访问方式汇总的相关文章

python 面向对象和类成员和异常处理

python 面向对象 你把自己想象成一个上帝,你要创造一个星球,首先你要把它揉成一个个球,两个直径就能创造一个球 class star: '''名字(name),赤道直径(equatorial diameter),极直径(polar diameter)''' def __init__(self,name,eqDiameter,poDiameter): self.name=name self.eqDiameter=eqDiameter #赤道直径 self.poDiameter=poDiamet

C++的继承操作---基类指针访问派生类问题---基类成员恢复访问属性问题

#include "stdafx.h" #include <iostream> #include <algorithm> using namespace std; class Base { public: int num; virtual void func() { cout<<"Do something in Base"<<endl; } }; class Derived:private Base { public:

备忘之类中的static成员的访问方式

原文地址:http://leihuang.net/2014/05/19/List-Interviews/ 单链表的一些常见面试题汇总 单链表反转/逆序 求单链表倒数第N个数 找到单链表的中间结点 如何判断链表是否有环的存在 单链表建环,无环链表变有环 如何知道环的长度? 如何找出环的连接点在哪里? 删除单链表中的重复元素 下面我先简单叙述一下每道题的思路,然后把实现的程序一起贴出来,不会讲得太细,我觉得只要有了思路之后,接下来的难点就是语言上的一些细节问题了,这个不自己去实现,听别人讲是体会不到

Python面向对象02/类的空间问题

Python面向对象02/类的空间问题 内容大纲 1.从空间角度研究类 2..类与类之间的关系 1.类的空间问题 1.1何处可以添加对象属性 在类的__init__可以添加,在类的方法也可以添加,在类的外部也可以添加 # class Human: # # mind = '有思想的' # # def __init__(self, name, age): # self.name = name # self.age = age # # def eat(self,argv): # # self.hobb

spring mvc 的jpa JpaRepository数据层 访问方式汇总

spring mvc 的jpa JpaRepository数据层 访问方式汇总 博客分类: spring jpa springjpaJpaRepository 本文转载至:http://perfy315.iteye.com/blog/1460226 AppleFramework在数据访问控制层采用了Spring Data作为这一层的解决方案,下面就对Spring Data相关知识作一个较为详细的描述. 1.Spring Data所解决的问题 Spring Data :提供了一整套数据访问层(DA

Python 学习笔记 - 面向对象(类成员)

上一篇学习了Python面向对象的3大特性,封装,继承和多态,这一篇继续学习类成员,包括字段,方法,属性以及他们的修饰符. 1.字段 字段分为静态字段和普通字段.静态字段属于类,而普通字段属于对象,因此静态字段在内存中只保存一份,而普通字段在每个对象中都保存了一份.定义的时候静态字段定义在类的范围里面,而普通字段定义在方法里面. 例如: >>> class Foo:     # 字段(静态字段)     CC = 123     def __init__(self):         #

Python面向对象之类的成员

Python面向对象的编程过程中,我们为类实例化了对象,并通过对象指针来访问类中对应的资源,那么这些资源大体分为三大部分,分别是字段.方法和属性,我们将这三大块统称为类的成员. 一.字段 字段可以分为静态字段.动态字段,下面通过代码展示类中的两种字段 class MyClass:     # 静态字段,属于类,多个对象共用一个静态字段     leader = "abuve"       def __init__(self):         # 动态字段,属于对象,也可以叫普通的字段

02-25类成员的访问权限

面向对象编程的一大特性就是可以控制类成员的可访问性.当前主流的面向对象语言都拥有以下三种基本的可访问性. 1)公有:public 访问不受限制 2)私有:private 只有类自身成员可访问 3)保护:protected 子类可以访问,其他类无法访问 (1)public和private public和private主要用于单个类的成员存取权限. 1 class A 2 { 3 public int publicI; 4 private int privateI; 5 protected int

C++派生类成员的访问属性

既然派生类中包含基类成员和派生类自己增加的成员,就产生了这两部分成员的关系和访问属性的问题.在建立派生类的时候,并不是简单地把基类的私有成员直接作为派生类的私有成员,把基类的公用成员直接作为派生类的公用成员. 实际上,对基类成员和派生类自己增加的成员是按不同的原则处理的.具体说,在讨论访问属性时,要考虑以下几种情况: 基类的成员函数访问基类成员. 派生类的成员函数访问派生类自己增加的成员. 基类的成员函数访问派生类的成员. 派生类的成员函数访问基类的成员. 在派生类外访问派生类的成员. 在派生类