Python面向对象

举报
IT十八掌 发表于 2019/05/31 13:46:08 2019/05/31
2.8k+ 0 0
【摘要】 1、class定义#定义类class Emp: pass2、静态变量class Emp: #静态变量,通过类直接访问 id = 100 #__开头的是私有属性 __age = 20#通过类直接访问print Emp.id3、构造函数和实例方法3.1 构造函数构造函数名称固定,就是init方法。class Emp: #构造函数 def __ini...

1、class定义

#定义类
class Emp:
  pass

2、静态变量

class Emp:
    #静态变量,通过类直接访问
    id = 100
    
    #__开头的是私有属性
    __age = 20

#通过类直接访问
print Emp.id

3、构造函数和实例方法

3.1 构造函数

构造函数名称固定,就是init方法。

class Emp: 
    #构造函数
    def __init__(self , name ,age):
        #实例变量
        self.name = name
        self.age = age

3.2 成员函数

通过对象调用的函数,函数首个参数需要使用self作为参数。

class Foo:
   #定义实例方法
 def add(self , a, b):
      return a + b ;

foo = Foo()
#调用实例函数
foo.add(1,2)

3.3 类方法

类方法不需要实例化对象,通过类名直接进行调用,相当于java中的静态方法。但方法的首参必须是cls类型,表示当前的类。

class Foo:
    #cls表示当前的类
    @classmethod
    def add(cls , a , b):
        return a + b ;
Foo.add(1,2)

3.4 静态方法

python中的静态方法类似于scala中的函数,即可以直接访问的函数,不需要通过类名访问。首个参数也无需定义成cls。

class Foo:
    @staticmethod
    def add(a,b)
     return a + b ; 

#调用方法
add(1,2)

4、析构函数

class Emp:
    #析构函数
    def __del__(self):
        print "销毁对象!"
#创建对象
e = Emp()

#销毁对象
e = None
#删除对象的成员
del e.name

#删除变量
del e

5、内置属性

#内置属性判断
print hasattr(e , "age")
print hasattr(e , "name")
print getattr(e , "age")
setattr(e , "age" , 40)
print getattr(e , "age")
print getattr(e , "name" , "nobody")
delattr(e, "age")
print hasattr(e , "age")

#访问类的属性
#__dict__访问类的成员
d = Emp.__dict__
print  d

#访问类名
print Emp.__name__

#所有父类构成的元组
print Emp.__bases__

6、多重继承

class Horse:
    #__开头的方法时私有方法
    def __run(self):
        print "runing~~~"

    def eat(self):
        print "eating..."

    def __init__(self , name):
        self.name = name

class Donkey:
    money = 100
    def __init__(self ,age):
        self.age = age

#多重继承
class Luozi(Horse , Donkey):
    def eat(self):
        print "WWWWWWWWWWW"
    def __init__(self):
        #显式调用父类构造函数
        Horse.__init__(self , "tom")
        Donkey.__init__(self ,12)

l1 = Luozi()
print l1.eat()
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。