《Python 3.5从零开始学》笔记-第8章 面向对象编程

前几章包括开启python之旅、列表和元组、字符串、字典、条件和循环等语句、函数等基本操做。主要对后面几章比较深刻的内容记录笔记。html

第8章 面向对象编程

8.3深刻类

#!/usr/local/bin/python3
# -*- coding:utf-8 -*-
class MyClass(object):
  i=123
  def f(self):
    return 'hello world'

useClass=MyClass()
print('类属性:',useClass.i)
print('类方法:',useClass.f())

#打印系统默认的编码
import sys
print(sys.getdefaultencoding())

  输入,必须用python3,若是用python的话,会打印出编码而不是中文:python

python3 class_test.py

  程序执行结果以下:编程

类属性: 123
类方法: hello world
utf-8

  类中定义方法:第一个参数必须是self,其余和普通函数同样。函数

  类中调用方法:实例变量上直接调用,除了self不用传递,其余参数正常传入。 编码

  类对象支持两种操做:属性引用(obj.name,obj表明类对象,name表明属性)、实例化。spa

  

  类的构造方法

  若类不显式地定义一个__init__()方法,则程序默认调用一个无参的__init__()方法。一个类中可定义多个构造方法,可是后面的构造方法会覆盖前面的构造方法,只能根据最后一个构造方法的形式进行实例化。建议一个类中只定义一个构造函数。.net

#!/usr/local/bin/python3
# -*- coding:utf-8 -*-
class MyClass(object):
  i=123
  def __init__(self.name):
    self.name = name
  def f(self):
    return 'hello '+self.name

useClass=MyClass('angela')
print('类属性:',useClass.i)
print('类方法:',useClass.f())

  输出:code

类属性: 123
类方法: hello angela

 

  类的访问权限

#!/usr/local/bin/python3
# -*- coding:utf-8 -*-
class Student(object):
  def __init__(self,name):
    self.name = name
  def info(self):
    print('hello '+self.name)

stu=Student('angela')
print('修改前的姓名:',stu.name)
stu.info()
#能够在类外部修改类的内部属性 stu.name
= 'andrew' print('修改后的姓名:',stu.name) stu.info()

  输出:htm

修改前的姓名: angela
hello angela
修改后的姓名: andrew
hello andrew

  如上,能够在类外部修改类的内部属性。要让内部属性不让外部访问,属性名称前加两个下划线,self.__name对象

  如何访问类的私有变量:

#!/usr/local/bin/python3
# -*- coding:utf-8 -*-
class Student(object):
  def __init__(self,name):
    self.__name = name
  def info(self):
    print('hello '+self.__name)
  def getName(self):
    return self.__name
  def setName(self,name):
    self.__name = name

stu=Student('angela')
print('修改前的姓名:',stu.getName())
stu.info()

stu.setName('andrew')
print('修改后的姓名:',stu.getName())
stu.info()

  输出:

修改前的姓名: angela
hello angela
修改后的姓名: andrew
hello andrew

  这样,setName()修改内部属性时能够参数检查,若是传入参数不知足条件,就处理异常。

  类的私有方法和私有变量相似,def __setName(self, name)。经过公有方法调用私有方法,self.__setName('Andrew')。

8.4继承

 

多态

 

封装

 

多重继承

 

 

参考资料:

python3编码问题

python编码

 

参考资料:

python tutorial 3.6

Python博客

python多态

相关文章
相关标签/搜索