• 2018.10.25


    '''
    1类中定义函数分为了两大类:
    1. 绑定方法
    特殊之处: 绑定给谁就应该由谁来调用,谁来调用就会将谁当做第一个参数自动传入

    绑定给对象的方法: 在类中定义函数没有被任何装饰器修饰的情况下,默认就是绑定对象的
    绑定给类的方法: 为类中定义函数添加一个装饰器classmethod,就是绑定类的

    2. 非绑定方法
    特殊之处: 非绑定方法就是一个普通函数,既不与类绑定又不与对象绑定,意味着类与对象都可以调用,但是无论谁来调用都是一个普通函数,没有自动传值效果
    非绑定方法: 为类中定义函数添加一个装饰器staticmethod,就是非绑定方法

    # class Foo:
    # def func1(self):
    # print('func1',self)
    #
    # @classmethod
    # def func2(cls):
    # print('func2',cls)
    #
    # @staticmethod
    # def func3(x,y):
    # print('func3',x,y)
    #
    # obj=Foo()
    #一.绑定给对象的方法
    # 绑定给对象的,应该由对象来调,
    # obj.func1()
    # print(obj)

    # 绑定给对象的方法,类也可以调用,但是类调用就是一个普通函数,没有自动传值的效果
    # print(obj.func1)
    # print(Foo.func1)
    # Foo.func1(obj)

    #二.绑定给类的方法
    # 绑定给类的,应该由类来调,
    # print(Foo.func2)
    # print(obj.func2)
    # Foo.func2()
    # obj.func2()

    #三.非绑定方法
    # print(obj.func3)
    # print(Foo.func3)

    # obj.func3(1,2)
    # Foo.func3(1,3)


    2反射指的是通过字符串来操作属性
    '''
    class Foo:
    def __init__(self,name,age):
    self.name=name
    self.age=age

    def tell_info(self):
    print('%s:%s' %(self.name,self.age))

    obj=Foo('egon',18)

    #hasattr
    # print(hasattr(obj,'name')) #obj.name
    # print(hasattr(obj,'tell_info')) #obj.tell_info

    #getattr
    # res=getattr(obj,'name') #res=obj.name
    # print(res)
    # res=getattr(obj,'xxx',None)
    # print(res)

    #setattr
    # setattr(obj,'age',38)
    # setattr(obj,'sex','male')
    # print(obj.__dict__)
    # print(obj.sex)

    #delattr
    # delattr(obj,'name')
    if hasattr(obj,'xxxxe'):
    delattr(obj,'xxxxe')
    # print(obj.__dict__)


    # print(isinstance([],list)) #type([]) is list
    # class Foo:
    # pass
    # obj=Foo()
    # print(isinstance(obj,Foo))

    # issubclass()
    # class Foo:
    # pass
    #
    # class Bar(Foo):
    # pass
    # print(issubclass(Bar,Foo))


    # __str__: 会在对象被打印时自动触发,然后将返回值当作打印的结果
    class People:
    def __init__(self,name,age):
    self.name=name
    self.age=age

    def __str__(self):
    return '<%s:%s>' %(self.name,self.age)

    peo=People('egon',18)
    print(peo) #print(peo.__str__())

    l=list([1,2,3])
    print(l)

    3个内置方法
    # print(isinstance([],list)) #type([]) is list
    # class Foo:
    # pass
    # obj=Foo()
    # print(isinstance(obj,Foo))

    # issubclass()
    # class Foo:
    # pass
    #
    # class Bar(Foo):
    # pass
    # print(issubclass(Bar,Foo))


    # __str__: 会在对象被打印时自动触发,然后将返回值当作打印的结果
    class People:
    def __init__(self,name,age):
    self.name=name
    self.age=age

    def __str__(self):
    return '<%s:%s>' %(self.name,self.age)

    peo=People('egon',18)
    print(peo) #print(peo.__str__())

    l=list([1,2,3])
    print(l)

  • 相关阅读:
    XML验证框架在项目中的应用
    Container.DataItem几种方式.
    XMLSpy 的使用
    介绍一个工具给大家,做网站时,经常要上传文件到外网服务器,但是上传时往往需要很长时间,如果有一个文件对比工具……
    Xcopy 帮助.net 2005组件化开发
    不影响原有的onload方法的前提下,在页面中增加onload的执行方法
    如何将XSD文件以及引入import的文件生成相应的C#类。
    封装my97时间控件成asp.net 时间控件,支持多语言,皮肤,时间大小限制,时间格式验证功能,非常强大。
    参数化使用ADO.NET的OleDb方法时注意不能使用@参数
    提供一个通用的Javascript验证页面输入的脚本给大家,并希望大家提意见呀
  • 原文地址:https://www.cnblogs.com/jutao/p/9863720.html
Copyright © 2020-2023  润新知