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. 将dos窗口调白教程

    将dos弹出窗口调白教程 第1步:同时按住Win+R键,输入cmd 第2步:右键点击标题栏 第3步:点击默认值,然后再点击颜色 第四步:将窗口颜色设置为白色,字体颜色设置为黑色(效果测试)

  2. awk 控制语句if-else

    语法: 一.if (条件){语句}[else 语句] 单分支 二.if (条件){语句}else if( 条件){语句} 多分支 示例: .[root@localhost ~]# awk -F: '{ ...

  3. 【VS开发】动态创建ActiveX控件

    bool CCollectDataDlgDlg::CreateMyCtrl(LPRECT lpRect, UINT nID, CWnd *pParent) {  CLSID clsid;  wstri ...

  4. linux 编程头文件搜索规则

    包含头文件有两种写法,分别是:#include <stdio.h>#include "stdio.h" <>和""分别表示搜索位置的方式 ...

  5. [转帖]linux文件描述符文件/etc/security/limits.conf

    linux文件描述符文件/etc/security/limits.conf https://blog.csdn.net/fanren224/article/details/79971359 需要多学习 ...

  6. 解决SQLPLUS ??? 显示的临时办法

    错误现象为: 解决命令 export NLS_LANG=american_america.zhs16gbk

  7. OSCHINA 公布 2019 年度最受欢迎中国开源软件

    https://www.oschina.net/project 此文章从此处转载:https://www.oschina.net/project/top_cn_2019?utm_source=star ...

  8. thread 多线程2

    ###24.04_多线程(多线程程序实现的方式1)(掌握) * 1.继承Thread * 定义类继承Thread * 重写run方法 * 把新线程要做的事写在run方法中 * 创建线程对象 * 开启新 ...

  9. RabbitMQ入门教程(一):安装和常用命令

    原文:RabbitMQ入门教程(一):安装和常用命令 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn ...

  10. npm学习(九)之README.md文件

    包括文档(readme.md) npm建议您包含一个readme文件来记录您的包.自述文件必须有文件名readme.md.文件扩展名.md表示该文件是一个标记(markdown)文件.当有人发现您的包 ...