类(Class)和实例(Instance)

定义类是通过class关键字:
class Student(object):
pass

class后面紧接着是类名,即Student
接着是(object),表示该类是从哪个类继承下来的

根据Student类创建出Student的实例,创建实例是通过类名+()实现的:
>>> bart = Student()

class Student(object):

def __init__(self, name, score):
self.name = name
self.score = score
__init__方法的第一个参数永远是self,表示创建的实例本身
有了__init__方法,在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数,但self不需要传
>>> bart = Student('Bart Simpson', 59)
>>> bart.name
'Bart Simpson'
>>> bart.score
59

定义一个方法,除了第一个参数是self外,其他和普通函数一样

Python允许对实例变量绑定任何数据,也就是说,对于两个实例变量,虽然它们都是同一个类的不同实例,但拥有的变量名称都可能不同

限制
>>> bart = Student('Bart Simpson', 59)
>>> bart.score
59
>>> bart.score = 99
>>> bart.score
99
如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__
在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问
class Student(object):

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

外部代码要获取name和score
以给Student类增加get_name和get_score这样的方法:
class Student(object):
...

def get_name(self):
return self.__name

def get_score(self):
return self.__score
外部代码修改score
可以再给Student类增加set_score方法:

class Student(object):
...

def set_score(self, score):
self.__score = score

一个下划线开头的实例变量名,比如_name,这样的实例变量外部是可以访问的,但是,按照约定俗成的规定,当你看到这样的变量时,意思就是,“虽然我可以被访问,但是,请把我视为私有变量,不要随意访问”。

以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的,不是private变量

不能直接访问__name是因为Python解释器对外把__name变量改成了_Student__name,所以,仍然可以通过_Student__name来访问__name变量:

>>> bart._Student__name
'Bart Simpson'

转载于:https://www.cnblogs.com/wander-clouds/p/8456394.html

python 面向对象:类,作用域相关推荐

  1. Python面向对象---类的基本使用

    1.面向对象 类(class):是一种用来描述具有相同属性和方法的对象的集合. 类变量:类变量在整个实例化的对象中是公用的.一般定义在类中且在函数体之外. 方法:类中的函数 数据成员:类变量或者实例变 ...

  2. python面向对象类属性_python面向对象之类属性和类方法案例分析

    本文实例讲述了python面向对象之类属性和类方法.分享给大家供大家参考,具体如下: 目标 类的结构 类属性和实例属性 类方法和静态方法 01. 类的结构 1.1 术语 -- 实例 使用面相对象开发, ...

  3. python面向对象类的成员_Python面向对象中类的成员

    Python面向对象中类的成员总共有三种,分别是字段.方法和属性 Python Version: 3.5+ 字段 普通字段1 2 3 4 5 6 7 8class A: def __init__(se ...

  4. python面向对象类创建人物类包含姓名、职业_Python面向对象思想与应用入门教程【类与对象】...

    本文实例讲述了Python面向对象思想与应用.分享给大家供大家参考,具体如下: 面向对象思想 1.面向对象的设计思想 面向对象是基于万物皆对象这个哲学观点. 2.面向对象和面向过程的区别 面向过程 在 ...

  5. python面向对象 —— 类和对象(一)

    文章目录 一.面向对象的概念 二.类和对象 (一)类 (二)对象 (三)从对象抽象出类 三.创建类 (一)类属性 类变量和实例变量 (二)类的方法 参数 :self 的理解 __init__(初始化方 ...

  6. python面向对象类创建人物类包含姓名、职业_python面向对象类

    面向对象变成介绍 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西.主要应用在一旦完成很少修改的地方,如linux ...

  7. python面向对象类_python:面向对象(类)

    #!usr/bin/env python # -*- coding:utf-8 -*- __author__ = "Samson" ###类变量与实例变量 class Role: ...

  8. python面向对象类_python面向对象-类和对象

    一. 类的定义 class类名(): 代码 #定义类 classWasher():defwash(self):print("洗衣服") 注意:类名要满足标识符命名规则,同时遵循大驼 ...

  9. Python面向对象(类的成员之属性)

    day24 类的成员之属性 1 class Foo(): 2 def bar(self): 3 print("bar") 4 5 @property 6 def per(self) ...

  10. python 面向对象 类的内置方法

    判断是不是类cls的对象 class A:passa = A() print(isinstance(a,A)) 判断类sub是不是super的子类 class A:passclass B(A):pas ...

最新文章

  1. 你需要知道的高性能并发框架Disruptor原理
  2. mysql下载解压安装_mysql zip 解压安装
  3. putty改oracle数据库密码,用putty远程访问虚拟机linux系统Oracle数据库。
  4. 算法谜题 php,JavaScript实现N皇后问题算法谜题解答_javascript技巧
  5. JavaScript编程知识
  6. 如何做流数据分析,Byron Ellis来告诉你...
  7. CVPR 2022 3月7日论文速递(17 篇打包下载)涵盖 3D 目标检测、医学影像、图像去模糊、车道线检测等方向
  8. 多线程—并发容器与机制
  9. 千年鸿蒙 盼尔来兮是什么意思,鸿蒙是什么意思_鸿蒙的意思和出处_我爱历史网...
  10. Eclipse 中,web项目在Tomcat运行时填写不了Server name
  11. 纯英文换行的css,利用CSS实现纯英文数字自动换行
  12. Android 系统(212)---monkey实战–测试步骤、常用参数、常规monkey命令
  13. C# 线程安全的单例模式
  14. WEB标准的学习和理解(一)何为WEB标准
  15. 黄金价格走势分析,国内十大现货黄金正规平台排名
  16. PS如何替换瓶盖logo样机下载使用方法
  17. 字体的基础知识:英文字体区分练习
  18. C++ Primer Plus 第13章笔记
  19. ESLint : Expected linebreaks to be 'LF' but found 'CRLF' linebreak-style
  20. 下载Vue的dayjs

热门文章

  1. 喝不起奶茶,咱就为奶茶店开发个会员积分收银系统
  2. Oracle 优化器_访问数据的方法_单表
  3. 使用css实现背景图片无重复填充
  4. react+webpack 引入字体图标
  5. Python基础(9)水仙花数
  6. python学习笔记 -- reduce合并减少
  7. css z-index层重叠顺序
  8. JS window对象 Navigator对象 Navigator 对象包含有关浏览器的信息,通常用于检测浏览器与操作系统的版本。...
  9. 关于Puppet不得不说的故事
  10. 优秀学生是如何高效利用时间的?