- class Foo:
- def __init__(self): # 初始化操作
- print("我是 init, 我是老二")
- print("初始化操作. 在创建对象的时候自动调用这个方法")
- def __new__(cls, *args, **kwargs): # 创建, 它是真正的构造方法, 可以开辟内存
- print("我是 new. 我是老大")
- return object.__new__(cls)
- # 为了 对象 ()
- def __call__(self, *args, **kwargs):
- print("我是对象 ()")
- # 对象 []
- def __getitem__(self, item):
- print("item=",item)
- print("你执行了__getitem__")
- return "哈哈"
- # 对象 [key] = value
- def __setitem__(self, key, value):
- print("key,", key)
- print("value,", value)
- # del lst[1]
- def __delitem__(self, key):
- print("key=", key)
- # with 对象:
- def __enter__(self):
- print("我是 enter")
- # with 对象: 代码执行完毕. 最后执行这里
- def __exit__(self, exc_type, exc_val, exc_tb):
- print("我叫 exit")
- def __len__(self):
- print("我的天哪")
- return 3
- f = Foo() # 自动执行__init__()
- f() # 调用 -> __call__()
- print(callable(f)) # 对象 ()
- print(f["李嘉诚"]) # 自动调用__getitem__()
- f['jay'] = "林俊杰"
- del f['哈哈']
- with f:
- print("我是哈哈哈哈")
- with open() :
- lst = ["孙艺珍", "李金珠", "井柏然"]
- lst[2] # => 自动的调用__getitem__()
- def func():
- pass
- func = 3
- print(callable(func)) # 判断 xxx 是否是可调用的
- f.__init__() # 第一次这么写. 以后别这么写
- lst = [1,2,3,4]
- it = iter(lst)
- print(it.__next__())
- print(next(it)) # __next__()
- # 面试之前翻一番
- # 写出 15 个特殊成员, 并给出具体作用
- class H:
- country = "大清"
- print(H.country)
- # 面向对象编程的执行流程 ->
- # 1. 加载类 -> 给类创建一个名称空间 -> 主要存放类变量.
- # 2. 创建对象 -> 先找类. -> 根据类来开辟内存 -> 执行类中的__new__() -> 执行__init__() -> 返回对象
- class Student:
- def __init__(self, name, no, gender, cls, age):
- self.name = name
- self.no = no
- self.gender = gender
- self.cls = cls
- self.age = age
- # 这个对象字符串的表示.
- def __str__(self): # 返回该对象的字符串表示形式
- return f"{self.name}, {self.no}, {self.gender}"
- def __repr__(self): # 该对象的官方的字符串表示形式
- return f"{self.name}, {self.no}, {self.gender}"
- s = Student("董仲浩", "3", "男", "S18", "31")
- print(s)
来源: http://www.bubuko.com/infodetail-2899792.html