代码
class User:
def __init__(self, number):
"""__属性名,私有属性"""
self.__number = number
print("User init")
def get_number(self):
return self.__number
class Man(User):
def __init__(self):
print("Man __init__")
super().__init__(2)
"""
1. 功能单一
2. 不和基类关联,可以和任意基类组合,基类可以不和mixin关联就能初始化成功
3. 在mixin中不要使用super这种方法
"""
class Sample:
def __enter__(self):
"""获取资源"""
return self
def __exit__(self, exc_type, exc_val, exc_tb):
"""释放资源"""
print("exit")
def do_something(self):
print("doing something")
with Sample() as sample:
sample.do_something()
import contextlib
@contextlib.contextmanager
def file_open(file_name):
print("file open")
yield print(file_name)
print("file end")
with file_open("123") as f:
f
if __name__ == '__main__':
user = User(1)
print(user.__dict__)
print(User.__dict__)
print(dir(user))
print(Man.__mro__)
man = Man()