zoukankan      html  css  js  c++  java
  • python类定义

    在我的收藏中有一篇特别详细的类讲解

     此处部分内容引自:http://blog.sina.com.cn/s/blog_59b6af690101bfem.html

    class myclass:
    'this is my first class of python'

    # foo是类属性,相当于static foo是静态成员,可以用类名直接访问
    foo=100

    # myfun 是类方法,必须由类的实例来调用
    def myfun (self):
    print myclass.foo
    C=myclass()
    C.myfun()


    类的特殊属性

    myclass 是类定义

    print myclass.__name__ output:myclass貌似只有类定义有这个属性,类实例没有这个属性
    print myclass.__doc__ output:'this is my first class of python' 类的文档字符串
    print myclass.__dict__ output:类的所有属性和方法,只有类定义有,实例这个属性输出空
    print myclass.__module__ output:__main__类定义所在的模块

    C是类的实例

    print C.__doc__ output:'this is my first class of python' 类的文档字符串,实例也有此属性
    print C.__dict__ output:{} 实例没有这个属性,输出为空
    print C.__module__ output:__main__ 类定义所在的模块
    print C.__class__ output: myclass 实例对应的类名,仅实例有此属性

    类的构造

    class myclass:
    'this is my first class of python'
    foo=100
    def myfun (self):
    print "class's func "

    def __init__(self,msg='hello'):
    self.msglist=msg //实例属性可以动态的添加,此时是在构造时候添加完成
    print 'init'

    print myclass.foo
    C=myclass()
    C.myfun()
    print C.msglist

     

    注意,python可以灵活的随时为类或是其实例添加类成员,有点变态,而且实例自身添加的成员,与类定义无关:

    //添加一个类实例的成员

    C.name='genghao'

    现在实例C有了数据成员 name

    现在加入这两句

    print C.__dict__
    print myclass.__dict__

    可以看到类定义里面并没有添加成员name,说明它仅仅属于类的实例C

    类继承:

    class subclass(myclass):

             member='sdkfjq'

             def  func(self):

                    print "sdfa"

    多重继承:

    class multiple_inheritance(myclass,subclass,ortherclass):

                 def funy():

                          do what you want to do
     

    测试代码:

    class ttt:
        name= 42
      
        def __init__(self,voice='hello'):
            self.voice=voice#new member for class
        def member(self):
            self.name=63
            self.strane='st' #new member for class
        def say(self):
            print self.voice

    t= ttt()
    t.say()
    print t.name

    t.member()
    t.fuc='sdfa'#new member for instance of the class ttt
    print t.name

    print ttt.__name__

    print ttt.__dict__
    print t.__dict__
    print t.fuc

  • 相关阅读:
    华为精益敏捷专家:DevOps转型中的那些坑
    极致进化-敏捷进化型企业的未来畅想
    DevOps的工程化
    京东精益敏捷教练分享:敏捷助力产品创新!
    敏捷开发进度管理之燃尽图
    手把手教你进行Scrapy中item类的实例化操作
    手把手教你使用ADB卸载手机内置App软件
    手把手教你使用Python生成图灵智能小伙伴,实现工作助手/闲聊功能
    手把手教你利用Pyecharts库对IP代理数据进行数据可视化分析
    手把手教你使用Python爬取西刺代理数据(下篇)
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6205648.html
Copyright © 2011-2022 走看看