zoukankan      html  css  js  c++  java
  • python学习第十七天

    一、类与类之间的关系

    1.依赖关系
    在方法中给方法传递一个对象。此时类与类的关系是最轻的
    练习:
    class DaXiang():
    def open(self, thing):
    print('大象')
    thing.op()
    print('打开%s' % thing.name)

    def zhuang(self, thing):
    print('大象自己走进%s' % thing.name)

    def cl(self, thing):
    thing.cl()
    print('大象自己关%s门' % thing.name)

    class BingXiang():
    name = '冰箱'
    def op(self):
    print("%s自己打开门" % BingXiang.name)
    def cl(self):
    print('%s自己关门' % BingXiang.name)

    bx = BingXiang()
    da = DaXiang()
    da.open(bx)
    da.zhuang(bx)
    da.cl(bx)

    class plants():
    def __init__(self, pname, gon):
    self.pname = pname
    self.gon = gon

    def da(self, js):
    print('我是%s,我要打僵尸,我的攻击力是:%s' % (self.pname, self.gon))
    js.beida()
    print('现在僵尸的血量是:%s' % (js.boold - self.gon))


    class jiang():
    def __init__(self, jname, boold):
    self.jname = jname
    self.boold = boold
    def beida(self):
    print('我是%s僵尸,我被打了!' % (self.jname))


    z = plants('仙人掌', 20)
    j = jiang('飞行', 80)
    z.da(j)


    2.关联关系(组合,聚合)
    def __init__(self, name, xxLis = None):
    self.name = name
    if lst == None:
    self.lst = []
    else:
    self.lst = lst
    def __init__(self, name, thing):
    self.name = name
    self.thing = thing

    练习:
    class Boy():
    def __init__(self, name, girlFriend = None):
    self.name = name
    self.girlFriend = girlFriend

    def wan(self):
    if self.girlFriend:
    print('%s 和 %s 一起去吃饭' % (self.name, self.girlFriend.name))
    else:
    print('单身狗你没女朋友,辣鸡')
    class Girl():
    def __init__(self, name):
    self.name = name
    b = Boy('Euan')
    g = Girl('ye')
    b.girlFriend = g
    b.wan()
    b1 = Boy('Euan')
    g1 = Girl('ye')
    b1.wan()

    class Teacher():
    def __init__(self, name, lst=None):
    self.name = name
    if lst == None:
    self.lst = []
    else:
    self.lst = lst

    def add(self, student):
    self.lst.append(student)

    def display(self):
    for s in self.lst:
    print(s.name)

    class Student():
    def __init__(self, num, name, teacher=None):
    self.name = name
    self.num = num
    self.teacher = teacher

    t = Teacher('Euan')
    s1 = Student(1,'a')
    s2 = Student(2,'b')
    s3 = Student(3,'c')
    s4 = Student(4,'d')
    t.add(s1)
    t.add(s2)
    t.add(s4)
    t.display()


    3.简单继承
    self : 谁调用的,self就是谁


    二、特殊成员
    __init__()
    初始化方法
    __new__()
    构造方法,用来创建对象,开辟内存
    __call__()
    调用:对象() 会自动执行
    __getitem__()
    对象[key] 会自动执
    __setitem__()
    对象[key] 会自动执行 对象[任意参数] => __getitem__(item)
    __delitem__()
    del 对象[key] 会自动执行 __delitem__()
    __enter__() __exit__()
    with 对象 as 变量 会自动执行 进入:__enter__ 和 出去:__exit__
    __str__()
    当打印一个对象的时候. 默认的去执行__str__ 根据__str__返回的结果进行打印
    __repr__()
    一个对象的官方字符串表示形式
    __hash__()
    哈希算法 hash(c) __hash()__ == None 可是对象不可哈希
    __len__()
    对象的长度 len(c)
    __iter__()
    迭代
    __add__()
    对象 + 对象
    __name__
    类的名字(字符串)
    __doc__
    类的文档字符串
    __bases__
    类的所有父类组成的元组
    __dict__
    类的属性组成的字典
    __module__
    类所属的模块
    __class__
    类对象的类型


  • 相关阅读:
    56. Merge Intervals
    Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths CodeForces
    CodeForces 1328E-Tree Queries【LCA】
    2^x mod n = 1 HDU
    CodeForces 1327D
    CodeFoeces 1327E
    AtCoder Beginner Contest 159 E
    牛客14648-序列【莫比乌斯反演+容斥定理】
    完全平方数 HYSBZ
    MongoDB学习笔记(六、MongoDB复制集与分片)
  • 原文地址:https://www.cnblogs.com/EuanXu/p/9931816.html
Copyright © 2011-2022 走看看