鱼C论坛

 找回密码
 立即注册
查看: 1453|回复: 0

[技术交流] 零基础入门学习Python 第40讲 类和对象 一些相关的BIF

[复制链接]
发表于 2018-4-6 17:28:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
课堂笔记:
  1. 和类判定有关的方法是
      a. issubcalss(class,calssinfo),判定子类
          i. 一个类是自己的子类
          ii. classinfo是元祖,只要元祖中一个类对象是,就为True
          iii. 子类是True,父类在元祖中,也是True
      b. isinstance(object,class)
  2. 和属性有关的方法是:
      a. hasattr(object,name),name是字符串
      b. getattr(object,name[,default])
      c. setattr(object,name,value)
      d. delattr(object,name)
      e. property(getx,setx,delx)
  3. 修饰符:
      a. @something
      b. f()
      c. ==
      d. f = something(f)

测试题:
0.
使用issubattr(子类,父类),如果返回True,则前面是后面的子类,反之亦然
1.
使用isinstance(实例对象,类),如果实例对象来自于类,则返回True,否则返回False.
2.
先用hasattr(对象,属性)来判断,如果为真,则继续.
3.
对用户很有效,当改变内部方法名的时候,只需要在内部改变就可以了,对外仍然用property的方法名,看做封装的效果.
4.
x = property(getSize,setSize,delSize)
5.
##class CodeA:
##    def foo():
##        print("调用静态方法 foo()")
##
##        # 将 foo() 方法设置为静态方法
##        foo = staticmethod(foo)

##代码A
class CodeA:
    def __init__(self,func):
        self._func = func
    def __call__(self):
        # 将 foo() 方法设置为静态方法
        self._func()
        self._func = staticmethod(self._func)

@CodeA #foo = CodeA(foo)
def foo():
    print("调用静态方法 foo()")

foo()

class CodeA:
        @staticmethod
    def foo():
        print("调用静态方法 foo()")


##代码B
##class CodeB:
##    def foo(cls):
##        print("调用类方法 foo()")
##
##        # 将 foo() 方法设置为类方法
##        foo = classmethod(foo)

class CodeB:
    def __init__(self,func):
        self._func = func
    def __call__(self):
        self._func()
        self._func = classmethod(self._func)

@CodeB
def foo():
    print('调用类方法 foo()')

foo()

class CodeB:
        @classmethod
    def foo(cls):
        print("调用类方法 foo()")


6.
f = something(f)
def f():
    print('I love FishC.com')

7.
class C:
    def __init__(self):
        self._x = None

    @property
    def x(self):
        """I'm the 'x' property."""
        return self._x

    @x.setter
    def x(self, value):
        self._x = value

    @x.deleter
    def x(self):
        del self._x

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 03:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表