python-类的方法与类的成员

时间:2021-10-05 01:19:54

preface

include:

  1. @classmethod
  2. @staticmethod
  3. @property
  4. 私有属性
  5. 类的成员
#!/usr/bin/env python

class animal(object):
name='1990'
def __init__(self,name):
self.name=name
#加了两个下划线后的变量名,此时变为了私有属性,也就是私有变量
self.__num='private'
def talk(self):
print("%s are talking"%self.name) #类方法,不能够访问实例变量,把walk方法变成了类方法,可以直接类名.方法名调用,但是要注意的是walk里
# 面的代码块的变量或者其他的对象都应该是类可以访问的。
@classmethod
def walk(self):
#由于添加了类方法的装饰器,所以这里的%s只能用类属性(animal.name,也叫类变量)去赋值给%s,
print("\t\t%s are talking"%self.name) #静态方法,不再传self参数进去。所以不能够访问类变量以及实例变量,如果添加了self,那么就要在调用的时候把实例名传进去
@staticmethod
def habit():
print("%s's habbit : walking"%animal.name)
@property #把方法变成属性,那么调用的时候可以不用加括号(),一般是为了隐藏该方法
def runing(self):
print("%s is running"%self.name)
def r_private(self):
return self.__num @property
def total_players(self):
return self.__num
#这样可以修改添加了@property里面的值
@total_players.setter
def total_players(self,num):
self.num=num
print("total players:",self.num) animal.walk()
d=animal('ljf') d.walk()
d.habit()
d.runing
d.r_private() #咱们访问私有变量一般都是写个方法,通过方法返回私有变量 print(d.__num) #下面的直接加两个下划线来访问私有属性是错误的方法 d.__num='ahahh' #通过下面的赋值的方法,等于新建了一个__num的变量。这个和私有变量__num是两码事
print(d.__num) print(d._animal__num) #强制访问私有变量,实例名._类名__私有变量名 print(d.total_players)

问如何去访问私有属性,我们一般是在类里面设定一个方法,例子:

class a(object):
......省略一万字
def access_private(self):
return self.__private b=a()
b.access_private() #如果要用比较暴力的方法去访问的话,那么就只能像下面这样操作
b._a__private

类的成员

class foo(object):
"""
this class was test
"""
name='ljf'
age='123'
def __init__(self):
self.tt='durex'
def f1(self):
print('ssssss')
def __call__(self, *args, **kwargs):
print("use call method") a=foo()

__doc__ 打印类的注释信息

print(a.__doc__)

dict 打印类里面的类变量,下面:

  • 实例.__dict__是打印实例的变量。
  • 类.__dict__是打印类或对象中的所有成员(所有变量)。
print(a.__dict__)
print(foo.__dict__)

__call__ 这个的话是在类实例化后的对象加个括号出发,如x=class(),x()这样在实例化之后就加个()能够触发

a()

===============================================================

__init__() 是构造方法,在实例化的时候就会触发执行

  • __module__表示当前操作的对象在哪个模块里面
  • __class__表示当前操作的对象的类是什么

__del__ 析构方法,当对象在内存中被释放时,自动触发执行。注:此方法一般无须定义,因为Python是一门高级语言,

程序员在使用时无需关心内存的分配和释放,因为此工作都是交给Python解释器来执行,所以,

析构函数的调用是由解释器在进行垃圾回收时自动触发执行的。

python-类的方法与类的成员的更多相关文章

  1. Python属性、方法和类管理系列之----描述符类

    什么是描述符类? 根据鸭子模型理论,只要具有__get__方法的类就是描述符类. 如果一个类中具有__get__和__set__两个方法,那么就是数据描述符,. 如果一个类中只有__get__方法,那 ...

  2. Python属性、方法和类管理系列之----属性初探

    在学习dict的时候,肯定听过dict是Python中最重要的数据类型,但是不一定知道为什么.马上你就会明白原因了. Python中从模块.到函数.到类.到元类,其实主要管理方法就是靠一个一个的字典. ...

  3. Python学习_12_方法和类定制

    方法 在上一篇随笔中,简单提到了类的某些方法:__init__()等的调用,并简要说明方法和函数的区别. 方法是在类内部定义的函数,方法也是对象,所以方法是类的属性,这就是为什么说实例的方法存在于类定 ...

  4. Python变量、方法、类的命名规则

    1. 变量命名总结: - 1.单下划线开头变量:protected - 2.双下划线开头变量:private - 3.双下划线开头,双下划线结尾:系统内置变量 2. 函数命名总结: - 1.私有方法: ...

  5. Python 之 type方法创建类

    type()方法作为元类,用来创建类: type(类名, 父类的元组(针对继承的情况,可以为空),包含属性的字典(名称和值)) 以下代码可以用type()方法来创建: class Myclass(ob ...

  6. 对Objective-C相关的类、方法、属性、成员变量介绍

    类的定义@interface FirstClass :NSObject@end//@interface表示声明的是一个类,“:”表示继承关系,@end类的结束类的实现@implementation F ...

  7. Python属性、方法和类管理系列之----元类

    元类的介绍 请看位于下面网址的一篇文章,写的相当好. http://blog.jobbole.com/21351/ 实例补充 class Meta(type): def __new__(meta, c ...

  8. python用特殊方法定制类(不全)

    定义在class中不需要直接调用,python的某些函数或操作符会自动的调用对应的特殊方法. 1.python中 __str__和__repr__ __str__()用于显示给用户,而__repr__ ...

  9. Python属性、方法和类管理系列之----__slots__属性

    一句话说明 __slots__是用来限制实例的属性的,__slots__可以规定实例是否应该有__dict__属性:__slots__不能限制类的属性. 只有__slots__列表内的这些变量名可赋值 ...

  10. php类内方法使用类外变量和类外函数

    如果要调用另一个类的属性和方法,直接实例化后调用就可以 但是要使用的变量和函数是独立的,不在本类或其他类里面,这时调用就要用下面的方法(本例是在同一个php文件里,如果不再同一个类文件可以requir ...

随机推荐

  1. PHP干货技巧文,一些PHP性能的优化

    PHP优化对于PHP的优化主要是对php.ini中的相关主要参数进行合理调整和设置,以下我们就来看看php.ini中的一些对性能影响较大的参数应该如何设置. # vi /etc/php.ini (1) ...

  2. c/c++面试题(2)

    4.已知String类的原型是: class String { public: String(const char* str = NULL);   //普通的构造函数 String(const Str ...

  3. wpf中button的无边框实现

    设置button的样式为:Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}";即可

  4. c++字符串详解(转)

    之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够.字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是 ...

  5. 新浪云php与java连接MySQL数据库

    PHP新浪云连接MySQL <?php $con=mysql_connect(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYS ...

  6. Metronic&lowbar;下拉列表Select2插件的使用

    这个插件是基于Select的扩展插件,能够提供更加丰富的功能和用户体验,它的github官网地址为:https://select2.github.io/,具体的使用案例,可以参考地址:https:// ...

  7. poj 3740 Easy Finding 二进制压缩枚举dfs 与 DLX模板详细解析

    题目链接:http://poj.org/problem?id=3740 题意: 是否从0,1矩阵中选出若干行,使得新的矩阵每一列有且仅有一个1? 原矩阵N*M $ 1<= N <= 16 ...

  8. ASCII码常用值

    大写字母 A~Z 65~90 小写字母a~z 97~122 数字0~9 48~ 57

  9. 借贷宝注册送现金疯转 新闻PS图背后真相

    动动手指,20元人民币立即到手:http://www.cnblogs.com/mfryf/p/4754384.html 近日,九鼎投资旗下投资平台借贷宝开展的“拉上好友抢红包,轻轻松松玩出钱”引起市场 ...

  10. js函数绑定同时,如何保留代码执行环境?

    经常写js的程序员一定不会对下面这段代码感到陌生. var EventUtil = { addHandler : function(element, type, handler){ if(elemen ...