OOP

作者: viean | 来源:发表于2018-05-22 22:20 被阅读0次

类定义

class Student(object):
    def __init__(self, name, score):
        self.__name = name
        self.__score = score

    def print_score(self):
        print '%s: %s' % (self.__name, self.__score)

说明:init为构造函数,第一个参数为self为函数本身。
类成员以双下划线开头,说明为private访问限制的,类实例不能直接访问。(一个下划线开头的实例变量名,外部是可以访问的。其实双下划线的变量,python将其改名为"类名变量名",类实例可以通过如上标识访问,但是、总之访问这些变量是不好的。)

类继承

class Animal(object):
    def run(self):
        print 'Animal is running...'

class Dog(Animal):
    pass

class Cat(Animal):
    def run(self):    #方法的overwrite
        print 'Dog is running...'

dog = Dog()
dog.run()

cat = Cat()
cat.run()

#多态--父类是参数
def run_twice(animal):
    animal.run()
    animal.run()

#如下两个都可以正常运行
run_twice(Animal())
run_twice(Dog())

类继续可以共用父类公共方法,可重写父类的不适宜方法;
多态在类作为参数时,可以接收父类型的参数,把子类视作父类型参数进行调用。

type() 方法可获取对象类型

import types
types模块中有相应类型定义

>>> type('abc')==types.StringType
True
>>> type(u'abc')==types.UnicodeType
True
>>> type([])==types.ListType
True
>>> type(str)==types.TypeType
True

有一种类型就叫TypeType,所有类型本身的类型就是TypeType

isinstance() 判断变量是否为某类实例

dir() 获得一个对象的所有属性和方法

len() 返回对象长度(自动去调用该对象的len()方法)

>>> class MyObject(object):
...     def __init__(self):
...         self.x = 9
...     def power(self):
...         return self.x * self.x
...
>>> obj = MyObject()

>>> hasattr(obj, 'x') # 有属性'x'吗?
True
>>> hasattr(obj, 'y') # 有属性'y'吗?
False
>>> setattr(obj, 'y', 19) # 设置一个属性'y'
>>> hasattr(obj, 'y') # 有属性'y'吗?
True
>>> getattr(obj, 'y') # 获取属性'y'
19
>>> getattr(obj, 'z', 404) # 获取属性'z',如果不存在,返回默认值404
404
#如上也可以应用于方法

相关文章

  • OOP

    oop_simplestclass.py oop_methond.py oop_init.py oop_objva...

  • 关于oop和aop

    oop oop(Object Oriented Programming)面向对象编程, oop的设计特征:封装, ...

  • 面向对象编程

    OOP 指什么?有哪些特性 OOP:OOP(Object-oriented programming, 面向对象编程...

  • 关于对象-原型

    1.OOP 指什么?有哪些特性 OOP:Object-oriented programming,缩写OOP,即面向...

  • Java面试总结

    1.什么是OOP、AOP OOP即面向对象编程OOP三大特征:封装、继承、多态OOP五大原则:单一职责原则 (Si...

  • OOP

    类定义 说明:init为构造函数,第一个参数为self为函数本身。类成员以双下划线开头,说明为private访问限...

  • OOP

    java in think 起因 自从买了Java in think 这本书,一直想认真仔细的品味下这本某种意义的...

  • oop

    面向对象基本操作:一:基本操作示例一: class Test_A(): #定义类名def A(self):...

  • OOP

  • OOP

    Great work! Let's review everything that we've learned ab...

网友评论

      本文标题:OOP

      本文链接:https://www.haomeiwen.com/subject/qltmkftx.html