• 《零基础入门学习Python》学习过程笔记【39类的其他内容】


    1什么是组合?

    把类的对象放在一个新类里面

    class A:
        def __init__(self,x):
            self.n=x
    
    
    class B:
        def __init__(self,x):
            self.n=x
    
    
    class C:
        def __init__(self):
            self.a=A(1)
            self.b=B(2)
            print(self.a.n)
            print(self.b.n)
    >>> c=C()
    1
    2


    2
    >>> class A:
    	n=1
    
    	
    >>> a=A()
    >>> a.n=10
    >>> a.n 
    10    #直接改变了内部属性的值


    3.通过类名改变属性的值会发生什么?

    >>> class A:
    	n=1
    下面这段程序很正常
    >>> a=A()
    >>> b=A()
    >>> c=A()
    >>> a.n
    1
    >>> b.n
    1
    >>> c.n
    1
    下面这段程序很正常
    >>> a.n=2
    >>> a.n
    2
    >>> b.n
    1
    >>> c.n
    1

    下面这段程序不太正常

    >>> A.n=10
    >>> a.n
    2
    >>> b.n
    10
    >>> c.n
    10
    为什么a.n没有改变?对象本身的属性覆盖了类的属性



    5.对 对象中没有的变量赋值会出现什么情况?会添加这个属性

    >>> class C:
    	a=1
    
    	
    >>> c=C()
    >>> c.b=1
    >>> c.a
    1
    >>> c.b
    1


    4.属性的名字和方法的名字相同会出现什么情况?

    后面的会覆盖前面的

    >> c=C()
    >>> c.x
    <bound method C.x of <__main__.C object at 0x040C8BF0>> (没有变量x,只有函数x)
    >>> c.x()
    哈哈


    >>> class C:
    	def x(self):
    		print("哈哈")
    	x=1
    
    	
    >>> c=C()
    >>> c.x
    1
    >>> c.x()
    Traceback (most recent call last):
      File "<pyshell#66>", line 1, in <module>
        c.x()
    TypeError: 'int' object is not callable     (没有函数x只有变量x)


    特殊的情况:如果在外面为该变量起与方法同名的变量(为该变量名赋值),该函数会被覆盖

    5.如何查看对象的属性? 对象名.__dict__

    >>> class A:
    	x=1
    
    	
    >>> a=A()
    >>> a.y=2
    >>> a.__dict__
    {'y': 2}

    6.什么是绑定?

    当对象为该类中的变量赋值时,它的属性中才有他们的内容。在对象的外部对对象的属性中没有的变量赋值(添加属性)也算。






  • 相关阅读:
    mysql存储过程
    mysql sql语句大全(2)
    JavaScript自动关闭窗口
    mvc存储Cookie和读取Cookie方法
    JS正则表达式验证账号、手机号、电话、邮箱、货币
    Have trouble in your life
    微店网
    MVC4使用EF6连接mysql数据库
    asp.net,mvc4,mysql数据库,Ef遇到问题集合
    Python对DICOM图像进行阈值分割
  • 原文地址:https://www.cnblogs.com/iamjuruo/p/7470880.html
Copyright © 2020-2023  润新知