python成员方法共享吗_python-类的方法与类的成员

preface

include:

@classmethod

@staticmethod

@property

私有属性

类的成员

#!/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解释器来执行,所以,

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值