Python学习之面向对象基础
python的面向对象和以前学的c++,Java都是一般,大同小异,面向对象基础先谈谈类的构造,编写,属性和方法的可见性等等
1.定义类,创建和使用对象
#定义类
class Student(object):
#类student的初始化方法
def __init__(self,name,age):
self._name=name
self._age=age
def study(self,cname):
print("%s正在学习:%s"%(self._name,cname))
def movie(self):
if self._age <= 18:
print("%s只能看熊大熊二!"%self._name)
else:
print("%s正在看爱情动作片!"%self._name)
#创建和使用对象
def main():
student1=Student('wbb',21)
student1.study('python程序设计')
student1.movie()
if __name__=='__main__':
main()
2.属性和方法的可见性
Python在这个地方和其他语言还是有些区别的,其他语言可以设置属性为私有的(private)或者受保护的(protected),来限制对属性和方法的直接访问,但是python只有公有的和私有的,而且python中私有的只是一种形式,外界仍然可以访问到。所以,建议在python中将属性和方法的可见性定为公有的,但是你可以在属性名前加个单下划线,但这仅仅只是一种暗示,提醒你访问时要小心了,并不是python的语法,毕竟你得为自己的行为负责
私有属性和方法外部不能直接访问
class Test:
#属性名以双下划线开头表示私有的
def __init__(self,foo):
self.__foo=foo
#私有方法
def __bar(self):
print(self.__foo)
print('__bar')
def main():
test=Test('hello')
#AttributeError: 'Test' object has no attribute '__bar'
test.__bar()
print(test.__foo) if __name__=='__main__':
main()
python的私有并不是完全不能访问,其实也可以访问,所有不建议设为私有的,可以以单下划线开头,表示一种暗示
class Test:
#属性名以双下划线开头表示私有的
def __init__(self,foo):
self.__foo=foo
#私有方法
def __bar(self):
print(self.__foo)
print('__bar')
def main():
test=Test('hello')
test._Test__bar()
print(test._Test__foo) if __name__=='__main__':
main()
运行结果如下图:
Python学习之面向对象基础的更多相关文章
- Python学习笔记——面向对象基础
1.类和实例 1.1类的定义 类的定义使用class关键字,其后紧跟类名(通常大写开头),紧接着是(object),object是该类继承的类名,没有就继承object类. 实例化时就是类名+(),有 ...
- Python学习课程零基础学Python
python学习课程,零基础Python初学者应该怎么去学习Python语言编程?python学习路线这里了解一下吧.想python学习课程?学习路线网免费下载海量python教程,上班族也能在家自学 ...
- 8.python笔记之面向对象基础
title: 8.Python笔记之面向对象基础 date: 2016-02-21 15:10:35 tags: Python categories: Python --- 面向对象思维导图 (来自1 ...
- python学习日记(基础数据类型及其方法01)
数字 int 主要是用于计算的,常用的方法有一种 #既十进制数值用二进制表示时,最少使用的位数i = 3#3的ASCII为:0000 0011,即两位 s = i.bit_length() print ...
- Python学习之==>面向对象编程(二)
一.类的特殊成员 我们在Python学习之==>面向对象编程(一)中已经介绍过了构造方法和析构方法,构造方法是在实例化时自动执行的方法,而析构方法是在实例被销毁的时候被执行,Python类成员中 ...
- Python学习day16-模块基础
<!doctype html>day16 - 博客 figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { ...
- Python学习day12-函数基础(2)
<!doctype html>day12博客 figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { pos ...
- Python学习day11-函数基础(1)
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- Python学习笔记之基础篇(-)python介绍与安装
Python学习笔记之基础篇(-)初识python Python的理念:崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. python的历史: 1989年,为了打发圣诞节假期,作者Guido开始写P ...
随机推荐
- 一起学Vue之列表渲染
在Vue开发中,列表数据绑定非常简单易用,本文主要通过一些简单的小例子,讲述v-for的使用方法,仅供学习分享使用,如有不足之处,还请指正. 用 v-for 把一个数组对应为一组元素 我们可以用 v- ...
- python中一些相似用法的区别:index()和find(),dict[]和get()
index和find在字符串中的区别: index()方法和find()方法相似,唯一的区别就是find方法不包含索引值会返回-1,而index()不包含索引值会抛出异常 同样的:获取字典dict ...
- linux虚拟机内网突然不通了
之前安装后 内网,外网测试通常的,今天有开发反应es服务不通了 后来到服务器查看了一下,es和同步服务都停了 重新启动,发现同步服务无法启动,网络问题 报错信息“Failed to initiali ...
- 【Python】数值运算操作符
- JAVA 注解教程(四)Java 预置的注解
@Deprecated 这个元素是用来标记过时的元素,想必大家在日常开发中经常碰到.编译器在编译阶段遇到这个注解时会发出提醒警告,告诉开发者正在调用一个过时的元素比如过时的方法.过时的类.过时的成员变 ...
- Unable to connect to a repository at URL
缓存问题: 1. 右键点击本地副本,TortoiseSVN -> Settings -> Saved Data, 2.点击“Clear”按钮,把本地缓存都清除了,点击“确定”: 3. 再重 ...
- TD-在http请求头上添加参数
dojo.xhrGet({ url : url, timeout : easy7.timeout, headers: { iBaseToken: easy7.iBaseToken },
- sql 单表操作
前戏 --创建表 create table xxx( id int unsigned not null auto_increment primary key, name varchar(20) not ...
- vue -- v-model 表单绑定
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 使用Limit实现分页
limit语法 #语法 SELECT * FROM table LIMIT stratIndex,pageSize SELECT * FROM table LIMIT 5,10; // 检索记录行 6 ...