hand
_1_5_100
4
返回栏目
1k
9k
1k
1k
5k
1k
1k
1k
1k
3k
2k
1k
0.8k
2k
3k
1k
1k
0.7k
0.9k
1k
0.6k
0.4k
0.4k
0.3k
3k
2k
9k
0.4k
0.4k
0.8k
0.5k
3k
5k
1k
2k
2k
3k
5k
1k
1k
0.4k
0.5k
0.4k
0.6k
0.7k
1k
0.4k
0.3k
4k
0.5k
0k
0.3k
0k
0.2k
0.2k
0.3k
0.9k
0.9k
0.1k
0.9k
0.9k
1k
0.5k
6k
0.3k
0.4k
0.7k
0.6k
8k
3k
1k
1k
1k
1k
0k
2k
1k
1k
0.2k
5k
4k
5k
0.4k
0.8k
1k
1k
1k
0.1k
2k
1k
2k
6k
0k
2k
7k
1k
5k
2k
3k
1k
0k
1k
0.9k
0.4k
0.2k
1k
3k
4k
1k
1k
1k
2k
3k
0.7k
0.3k
0.5k
0.6k
1k
0.9k
3k
0.3k
4k
返回python栏目
作者:
贺及楼
成为作者
更新日期:2024-05-25 13:33:01
分类 | 方法 | 说明 | 作用 |
---|---|---|---|
基本 | __new__(cls[, ...]) |
创建对象的方法,当通过类去创建对象时就是调用new方法去创建的 | 单例模式 |
基本 | __init__(self[, ...]) |
初始化方法,当实例被创建的时候调用的初始化方法 | |
基本 | __del__(self) |
析构方法,当实例被销毁的时候调用的方法 | |
基本 | __call__(self[, args...]) |
类装饰器,允许一个类的实例像函数一样被调用:x(a, b) 调用 x.call(a, b) | |
容器类型数据 | __len__(self) |
定义当被 len() 调用时的行为(返回容器中元素的个数) | |
容器类型数据 | __contains__(self, item) |
定义当使用成员测试运算符(in 或 not in)时的行为 |
__new__(cls[, ...])
可用单例模式
class Dog():
# 优先级1
# 单例模式(只能创建一个)
# 音乐播放 对象(同时播一首歌)
# 回收站 对象(同时都扔到一个垃圾桶)
# 打印机 对象(同时打一份)
instance = None # 记录第一个被创建对象的引用
init_flag = False # 记录是否执行过初始化动作
def __new__(cls, *args, **kwargs):
if cls.instance is None: # 1. 判断类属性是否已经被赋值
cls.instance = super().__new__(cls)
return cls.instance # 2. 返回类属性的单例引用
# 必须返回一个对象,否则不跑__new__()方法
def __init__(self, name):
self.name = name
if __name__ == "__main__":
my_dog_1 = Dog('A')
print(my_dog_1)
my_dog_1.color = "yellow"
print(my_dog_1.name)
my_dog_2 = Dog('B')
print(my_dog_2)
print(my_dog_2.name)
print(my_dog_2.color) # 修改了my_dog_1,但是my_dog_2也被修改了
<__main__.Dog object at 0x7f95802d9a50>
A
<__main__.Dog object at 0x7f95802d9a50>
B
yellow
__init__(self[, ...])
class Dog():
def __init__(self, name):
self.name = name
if __name__ == "__main__":
my_dog_1 = Dog('A')
print(my_dog_1)
print(my_dog_1.name)
my_dog_2 = Dog('B')
print(my_dog_2) # 2个的内存空间不一样
print(my_dog_2.name)
<__main__.Dog object at 0x7fb640219e50>
A
<__main__.Dog object at 0x7fb640219d90>
B
__del__(self)
class Dog():
def __init__(self, name):
self.name = name
# 对象被删除(内存删除了)后会用
# del my_dog
# 出个告警?
def __del__(self):
print("__del__方法被调用")
if __name__ == "__main__":
my_dog_1 = Dog('A')
print(my_dog_1)
print(my_dog_1.name)
<__main__.Dog object at 0x7fbf28219e90>
A
__del__方法被调用
__call__(self[, args...])
class Dog():
def __init__(self, name):
self.name = name
# 可以让my_dog成为可调用对象
# my_dog('W', 6)
def __call__(self,age):
self.age = age
print("调用__call__()方法",age)
if __name__ == "__main__":
my_dog_1 = Dog('A')
my_dog_1(23)
print(my_dog_1.age)
调用__call__()方法 23
23
__len__(self)
长度
class Dog_1(object):
def __init__(self, age):
self.age = age
self.li = ['a', 'v', 's']
class Dog(object):
def __init__(self, age):
self.age = age
self.li = ['a', 'v', 's']
def __len__(self):
return len(self.li)
U = Dog(12)
print(len(U)) # 3
U = Dog_1(12)
print(len(U)) # 'Dog_1' has no len()
__contains__(self, item)
是否包含
class Student():
def __init__(self,name):
self.name=name
def __contains__(self,item):
return item in self.name
s=Student("Jack")
print("J" in s)
## True
python
整章节共122节
快分享给你的小伙伴吧 ~