码迷,mamicode.com
首页 > 编程语言 > 详细

Python 特殊关系

时间:2018-12-27 22:48:57      阅读:197      评论:0      收藏:0      [点我收藏+]

标签: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)

  

Python 特殊关系

标签:cal   判断   set   class   pre   fun   方法   __exit__   pen   

原文地址:https://www.cnblogs.com/demons97/p/10187513.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!