python学习之路-第七天-python面向对象编程简介

面向对象编程

在python中,同样是类和对象作为重要的组成部分。

而且在python中基本数据类型如int都是有封装类的,都有自己的方法,应该是和java里面的Integer类似吧

类包括域和方法:域也就是类或对象中的变量,方法就是类里面声明的函数

self关键字:

相当于java中的this,下面是个例子:

#!/usr/bin/python
# Filename: method.py

class Person:
    def sayHi(self):
        print ‘Hello, how are you?‘

p = Person()
p.sayHi()

# This short example can also be written as Person().sayHi()

你一定很奇怪Python如何给self赋值以及为何你不需要给它赋值。举一个例子会使此变得清晰。假如你有一个类称为MyClass和这个类的一个实例MyObject。当你调用这个对象的方法MyObject.method(arg1, arg2)的时候,这会由Python自动转为MyClass.method(MyObject, arg1, arg2)——这就是self的原理了。这也意味着如果你有一个不需要参数的方法,你还是得给这个方法定义一个self参数。

init方法的使用和说明(相当于构造函数):

用来在类被实例化后马上就被运行的一段程序,用来作为对象的初始化操作

#!/usr/bin/python
# Filename: class_init.py

class Person:
    def __init__(self, name):
        self.name = name
    def sayHi(self):
        print ‘Hello, my name is‘, self.name

p = Person(‘qjx‘)
p.sayHi()

# This short example can also be written as Person(‘qjx‘).sayHi()
$ python class_init.py
Hello, my name is qjx

del方法的使用和说明(相当于析构函数):

他是用在对象被释放后运行的一段程序,用来释放资源等操作,一般在程序消逝后自动进行,如果要手动释放,就要显示的调用del语句

一般的,对于变量和方法的作用域

  • __privatevar(两个下划线前缀)python会把它作为私有变量
  • 还有一个惯例,也就是平常人们的命名习惯,如果某个变量只想在类或对象中使用,就应该以单下划线前缀。
  • 其他的名称都将作为公共的,可以被其他类/对象使用

继承(SchoolMember类被称为 基本类 或 超类 。而Teacher和Student类被称为 导出类 或 子类 )

#!/usr/bin/python
# Filename: inherit.py

class SchoolMember:
    ‘‘‘Represents any school member.‘‘‘
    def __init__(self, name, age):
        self.name = name
        self.age = age
        print ‘(Initialized SchoolMember: %s)‘ % self.name

    def tell(self):
        ‘‘‘Tell my details.‘‘‘
        print ‘Name:"%s" Age:"%s"‘ % (self.name, self.age),

class Teacher(SchoolMember):
    ‘‘‘Represents a teacher.‘‘‘
    def __init__(self, name, age, salary):
        SchoolMember.__init__(self, name, age)
        self.salary = salary
        print ‘(Initialized Teacher: %s)‘ % self.name

    def tell(self):
        SchoolMember.tell(self)
        print ‘Salary: "%d"‘ % self.salary

class Student(SchoolMember):
    ‘‘‘Represents a student.‘‘‘
    def __init__(self, name, age, marks):
        SchoolMember.__init__(self, name, age)
        self.marks = marks
        print ‘(Initialized Student: %s)‘ % self.name

    def tell(self):
        SchoolMember.tell(self)
        print ‘Marks: "%d"‘ % self.marks

t = Teacher(‘Mrs. Shrividya‘, 40, 30000)
s = Student(‘Swaroop‘, 22, 75)

print # prints a blank line

members = [t, s]
for member in members:
    member.tell() # works for both Teachers and Students
$ python inherit.py
(Initialized SchoolMember: Mrs. Shrividya)
(Initialized Teacher: Mrs. Shrividya)
(Initialized SchoolMember: Swaroop)
(Initialized Student: Swaroop)

Name:"Mrs. Shrividya" Age:"40" Salary: "30000"
Name:"Swaroop" Age:"22" Marks: "75"

Python在子类中不会自动调用基本类的constructor,你得亲自专门调用它。

Python中可以多重继承

时间: 2024-11-09 03:41:08

python学习之路-第七天-python面向对象编程简介的相关文章

python学习之路(1)--python简介

首先,本人也是刚入门python没多久,没有老鸟的经验和技能,大佬勿喷,以下所有皆是本人自己对python的理解 python,是一种解释型(高级)的,面向对象的,带有动态语义的高级程序设计的开源语言.1989年,Guido von Rossum(荷兰人)人称龟叔,他在圣诞节时因为无聊而开发出来的,详细的python发展史介绍可以百度或Google,已经很多了,不再赘述. python是从2015年在国内火起来,之前为什么不火,因为国内情况一直稍落于外国强国,并且在刚开始的python其实很多缺

Python学习之路(2)——Python种类介绍

Python的种类 Cpython    Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上. Jyhton    Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行. IronPython    Python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行.(与Jython类似) PyPy(特殊) 

王亟亟的Python学习之路(七)-date,continue,迭代对象,生成器

转载请注明出处:王亟亟的大牛之路 大多数的语言都提供了时间操作的相应类,诸如java的java.util.Date,java.util.Calendar等等, Python中是time 和 calendar . 首先需要导包import time; 然后就可以使用了,mTime= time.time()那结果呢? 1448004021.1337154 (而且这个数字还继续在变) WHY? 用ticks计时单位返回从12:00am, January 1, 1970(epoch) 开始的记录的当前操

python学习之路(七)

今天更新一下有关于函数的知识点~ 函数是什么? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,具体区别,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫做subroutine(子过程或子程序),在Pascal中叫做procedure(过程)和function,在C中只有function,在Java里面叫做method. 函数分为面向对象,面向过程和函数式编程. 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即

Python学习之路(七):基础知识之内置函数

1.迭代器相关 iter( )获取迭代器 next( )获取迭代对象 1 lst = ['白蛇传', '骷髅叹', '庄周仙游'] 2 3 it = lst.__iter__() 4 print(it.__next__()) 5 print(it.__next__()) 6 print(it.__next__()) 7 8 # it = iter(lst) # 内部封装的就是__iter__ 9 # print(next(it)) 10 # print(next(it)) 11 # print(

Python高手之路【七】python基础之模块

本节大纲 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式 1:模块介绍 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以

python学习之路-第五天-python的数据结构

数据结构 1. 列表 例子: #!/usr/bin/python # Filename: using_list.py # This is my shopping list shoplist = ['apple', 'mango', 'carrot', 'banana'] print 'I have', len(shoplist),'items to purchase.' print 'These items are:', # Notice the comma at end of the line

Python3学习之路~6.2 实例演示面向对象编程的好处

首先建一个dog类,实例化为3个dog对象,并让它们都叫. class Dog: def bulk(self): print("xiaohuang:wang wang wang !") d1 = Dog() d2 = Dog() d3 = Dog() d1.bulk() d2.bulk() d3.bulk() # 运行结果: # xiaohuang:wang wang wang ! # xiaohuang:wang wang wang ! # xiaohuang:wang wang w

Python学习之路【第一篇】-Python简介和基础入门

1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是一种开发语言,而且已经进阶到主流的二十多种开发语言的top 5(数据源自最新的TIOBE排行榜). 来头不小啊!二十多种主流的开发语言,我该从哪一个开始呢?人生苦短,let‘s python! 1.2 Python的由来和发展趋势 Python的前世源自鼻祖“龟叔”.1989年,吉多·范罗苏姆(Gu