OOP

类定义

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
#如上也可以应用于方法
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 4,370评论 1 44
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,874评论 18 399
  • 某饭店门口。 一瘦弱老人窝在角落,目光呆滞,看着行人来往,手掌摊开着。寒风瑟瑟,落叶飘旋。老人瘦弱的手掌微微颤动。...
    水陌阅读 400评论 0 1
  • 二十岁开始参加工作,在每个城市里穿梭,也很少再回到家乡,即使回去,也只是偶尔驻足,日新月异的家乡,再也没有我到处踏...
    阿静不静阅读 300评论 0 0