标签:cal 判断 set class pre fun 方法 __exit__ pen
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)
标签:cal 判断 set class pre fun 方法 __exit__ pen
原文地址:https://www.cnblogs.com/demons97/p/10187513.html