self的理解

通俗理解self就是实例对象,实例化的是什么,self就是什么

实例变量: 经过实例化才能使用的变量

class Person():
def __init__(self,id,name):#构造函数
self.id = id#实例变量
self.name = name#实例变量 def cook(self):
print('%s在做饭'%self.name) def housework(self):
print('%s在做家务'%self.name) xh = Person(1,'小黑')#等同于__init(self,id,name) self其实就是xh
xh.cook()
xh.housework()
xb = Person(2,'小白')
xb.cook()

类变量: 定义在类里面的变量,类的对象优先获取实例变量,也就是构造函数中变量的,如果获取不到就会获取类变量

class Test:
name = 'haha'
def __init__(self,name):
# self.name = name
pass
def test(self):
print('姓名是%s'%self.name) t=Test('ahah')
print(t.name)

类方法:不用实例化即可调用的方法,类名可直接调用,实例也可以调用,类方法可以调用类变量

class Test:

    name = 'haha'

    def __init__(self,name):
# self.name = name
pass def test(self):
print('姓名是%s'%self.name) @classmethod #加上这个装饰器就是定义一个类方法
def sayCountry(cls): #cls代表本身的这个类'Test'
print(cls.name) t=Test('ahah')
print(t.name)
Test.sayCountry()#类方法,不需要实例化,通过类名直接调用;用实例也能调用

静态方法:无法调用类变量,无法调用类方法;    类名可以直接调用它,实例也可直接调用它

class Test:

    name = 'haha'

    def __init__(self,name):
self.name = name def test(self):
print('姓名是%s'%self.name) @classmethod #加上这个装饰器就是定义一个类方法
def sayCountry(cls): #cls代表本身的这个类'Test'
print(cls.name) @classmethod
def getCountry(cls):
cls.sayCountry()#类方法可互相调用 @staticmethod #加上这个装饰器就是定义一个静态方法,无法调用类变量和类方法
def help():
print('说明书') t=Test('ahah')
print(t.name)
Test.sayCountry()#类方法,不需要实例化,通过类名直接调用;用实例也能调用
Test.help()
Test.getCountry()

属性方法:看起来像变量的一个方法,不能用参数

class Test:

    name = 'haha'

    def __init__(self,name,age):
self.name = name
self.age = age def test(self):
print('姓名是%s'%self.name) @classmethod #加上这个装饰器就是定义一个类方法
def sayCountry(cls): #cls代表本身的这个类'Test'
print(cls.name) @classmethod
def getCountry(cls):
cls.sayCountry()#类方法可互相调用 @staticmethod #加上这个装饰器就是定义一个静态方法,无法调用类变量和类方法
def help():
print('说明书') @property
def price(self):#属性方法,不能用参数
print(self.age) t=Test('ahah',10)
print(t.name)
Test.sayCountry()#类方法,不需要实例化,通过类名直接调用;用实例也能调用
Test.help()
Test.getCountry()
t.price #不用加括号,引用方式和引用属性(变量)一致

python 面向对象_2的更多相关文章

  1. python 面向对象初级篇

    Python 面向对象(初级篇) 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发" ...

  2. Python 面向对象 基础

    编程范式概述:面向过程 和 面向对象 以及函数式编程 面向过程:(Procedure Oriented)是一种以事件为中心的编程思想. 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现 ...

  3. python面向对象进阶(八)

    上一篇<Python 面向对象初级(七)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...

  4. python 面向对象(进阶篇)

    上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...

  5. python 面向对象编程学习

    1. 问题:将所有代码放入一个py文件:无法维护 方案:如果将代码才分放到多个py文件,好处: 1. 同一个名字的变量互相不影响 2.易于维护 3.引用模块: import module 2.包:解决 ...

  6. Python面向对象详解

    Python面向对象的"怜人之处" Python的待客之道--谁能进来 Python的封装--只给你想要的 Python的继承--到处认干爹 Python的多态--说是就是

  7. python 面向对象和类成员和异常处理

    python 面向对象 你把自己想象成一个上帝,你要创造一个星球,首先你要把它揉成一个个球,两个直径就能创造一个球 class star: '''名字(name),赤道直径(equatorial di ...

  8. python 面向对象学习

    ------Python面向对象初 下面写一个类的简单实用,以便方便理解类 #python 3.5环境,解释器在linux需要改变 #阅读手册查询readme文件 #作者:S12-陈金彭 class ...

  9. 初识python面向对象

    一.初识python面向对象: class Person: #使用class关键字定义一个类 age=0 #类变量(静态变量) def eat(self,food): #定义一个方法 self.age ...

随机推荐

  1. jmeter业务建模中遇到的问题

    1.jmeter函数助手中的jexl3函数,不支持${__jexl3(15<${__Random(1,100,)}<36,)}这种写法,须这样写${__jexl3(15<${__Ra ...

  2. 吴恩达机器学习(四) 使用Octave

    一.基本操作 本课程有编程作业,编程作业需要使用Matlab或Octave,本文章使用Octave.下载地址:http://www.gnu.org/software/octave/#install.安 ...

  3. 深入理解java:2.3.3. 并发编程concurrent包 之容器ConcurrentHashMap

    线程不安全的HashMap 因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap. 效率低下的HashTable容器 H ...

  4. C语言I博客作业12-学期总结

    一.我学到的内容 二.我的收获 1. https://www.cnblogs.com/1076022899-lj/p/11576442.html 收获:第一次接触到C语言和PTA,第一次学习了博客园和 ...

  5. [转帖]LSB

    LSB 简介 冯 锐2006 年 8 月 07 日发布 https://www.ibm.com/developerworks/cn/linux/l-lsb-intr/ 学习一下 之前 不知道LSB_R ...

  6. Linux 根据端口快速停止服务并启动的办法

    0. 需要使用 lsof 的命令, 如果linux 上面没有安装的话 需要自行安装 yum install lsof or apt-get install lsof 1. 先根据端口查进程号 [roo ...

  7. numpy数组的索引和切片

    numpy数组的索引和切片 基本切片操作 >>> import numpy as np >>> arr=np.arange(10) >>> arr ...

  8. Python 描述符 (descriptor)

    1.什么是描述符? 描述符是Python新式类的关键点之一,它为对象属性提供强大的API,你可以认为描述符是表示对象属性的一个代理.当需要属性时,可根据你遇到的情况,通过描述符进行访问他(摘自Pyth ...

  9. ES使用text类型字段排序报错

    elasticsearch text字段排序报错解决使用elasticsearch 进行排序的时候,我们一般都会排序数字.日期.但是在排序text类型的时候就会出现错误. GET xytest/sut ...

  10. 日语能力考试N2必备训读动词

    日语能力考试N2必备训读动词 ア合う——あう——「自」合一.合到一起.准确味わう——あじわう——「他」品味.品尝預かる——あずかる——「他」照顾.保管.承担預ける——あずける——「他」寄存.处理难以了 ...