python中成员方法的特点_【python】类的特殊成员方法<1>

1.__doc__:打印类的描述信息

class Foo:

""" 描述类信息,这是用于看片的神奇 """

def func(self):

pass

print(Foo.__doc__)

#>>>描述类信息,这是用于看片的神奇

2.__module__:表示当前操作的对象在那个模块

"""

mymodule

"""

class C:

def __init__(self):

self.name = 'paul'

"""

-------

"""

from mymodule.lib import C

obj = C()

print (obj.__module__) # 输出 lib.aa,即:输出模块

#>>>>mymodule.lib

3.__class__:表示当前操作的对象的类是什么

"""

mymodule

"""

class C:

def __init__(self):

self.name = 'paul'

"""

-------

"""

from mymodule.lib import C

obj = C()

print (obj.__class__) # 输出 lib.aa.C,即:输出类

#>>>

4. __init__ :构造方法,通过类创建对象时,自动触发执行

class Role(object):

#初始化函数,在生成一个角色时要 初始化的一些属性就填写在这里

def __init__(self,name,role,weapon,life_value=100,money=15000):

#__init__中的第一个参数self,和这里的self都 是什么意思? 看下面解释

self.name = name

self.role = role

5.__del__:析构方法,当对象在内存中被释放时,自动触发执行

class Role(object):

def __init__(self,name,role,weapon:

self.name = name

self.role = role

self.weapon = weapon

def __del__(self): #析构函数

print("del.....run...")

r1 = Role('Alex','police','AK47') #生成一个角色

6.__call__:对象后面加括号,触发执行

class Foo:

def __init__(self):

pass

def __call__(self, *args, **kwargs):

print('__call__')

obj = Foo() # 执行 __init__

obj() # 执行 __call__

#>>>__call__

class ClassA(object):

def __new__(cls, *args, **kwargs):

object = super(ClassA, cls).__new__(cls)

print("HHHA:0===>")

return object

def __init__(self, *args, **kwargs):

print("HHHB:0===>")

def __call__(self, func):

print("HHHC:0===>")

return func

A = ClassA()

print("HHHH:0====>")

@ClassA()

def hello():

print("HHHC:0===>hello")

print("HHHH:1====>")

hello()

#>>>HHHA:0===>

#>>>HHHB:0===>

#>>>HHHH:0====>

#>>>HHHA:0===>

#>>>HHHB:0===>

#>>>HHHC:0===>

#>>>HHHH:1====>

#>>>HHHC:0===>hello

7.__dict__:查看类或对象中的所有成员

print(类.__dict__) # 打印类里所有属性,不包括实例属性

print(实例.__dict__) #打印实例所有属性,不包括类属性

8.__str__:如果一个类中定义了__str__方法,那么在打印 对象 时,默认输出该方法的返回值

class Foo:

def __str__(self):

return 'paul'

obj = Foo()

print(obj)

#>>>paul

9.__getitem__、__setitem__、__delitem__:

注:用于索引操作,如字典。以上分别表示获取、设置、删除数据

class Foo(object):

def __getitem__(self, key):

print('__getitem__', key)

def __setitem__(self, key, value):

print('__setitem__', key, value)

def __delitem__(self, key):

print('__delitem__', key)

obj = Foo()

result = obj['k1'] # 自动触发执行 __getitem__

#>>>__getitem__ k1

obj['k2'] = 'alex' # 自动触发执行 __setitem__

#>>>__setitem__ k2 alex

del obj['k1']

#>>>__delitem__ k1

10.类的生成 调用 顺序依次是 __new__ --> __init__ --> __call__

11.__len__,使用 len(object) 触发

class Foo:

def __init__(self, name):

self.name = name

def __len__(self):

return 10 # 注意返回结果必须是 int 类型

f = Foo('hkey')

print(len(f))

#>>>10

12.__hash__,调用 hash(object) 触发

class Foo:

def __init__(self):

self.a = 1

self.b = 5

def __hash__(self):

return hash(str(self.a) + str(self.b))

f = Foo()

print(hash(f))

#>>>-3542141893081931293

13.__eq__,当两个对象进行比较时,触发

class Foo:

def __init__(self):

self.a = 1

self.b = 5

def __eq__(self, other):

if self.a == other.a and self.b == other.b:

return True

return False

a = Foo()

b = Foo()

print(a == b) # 执行这个比较的时候,就调用了 __eq__ 方法

#>>>True

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python成员方法是指定义在的函数,用于操作的实例对象。成员方法可以访问的属性和方法,也可以访问实例对象的属性和方法Python成员方法分为四:公有方法、私有方法、静态方法方法。其,公有方法可以通过对象名直接调用,私有方法以两个下划线开头“__”,不能通过对象名直接调用;静态方法方法通过名或对象名调用,但是不能直接访问属于对象的成员,只能访问属于成员。 下面是一些关于Python成员方法的例子: 1.定义一个Car,其包含公有属性price和私有属性value,以及静态方法show1和方法show2: class Car: price = 100 # 属性 __total = 0 # 私有属性 def __init__(self, c, v): self.color = c # 实例属性,公有成员 self.__value = v # 私有成员 Car.__total += 1 @staticmethod def show1(): print(Car.__total) @classmethod def show2(cls): print(cls.__total) 2.定义一个Student,其包含公有属性name、gender和tel,以及成员方法study: class Student: def __init__(self): self.name = None self.gender = None self.tel = None def study(self, thing='java'): print(f'{self.name}的性别-{self.gender},她正在学习{thing},{self.tel}') 3.定义一个Person,其包含成员方法eat、home和sleep: class Person: def eat(self): print('eat apple!') def home(self): print('go home!') def sleep(self): print('go to sleep!')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值