类相关的知识

在python2中的区分:

经典类:

class School:
pass

新式类:

class School(object):
pass

在python3中以上两种均为新式类

属性:

  • 数据属性:就是变量
  • 函数属性:就是函数,在面向对象里通常称为方法

注:类和对象均用点来访问自己的属性

类的属性

数据属性即变量,类的定义与函数又及其相似,其实可以用函数的作用域来理解类的属性调用

类的数据属性:

class School:
Teacher = "老王"
print(School.Teacher)

类的函数属性(一般称为方法):

class School:
Teacher = "老王"
def Examination(self):
print("%s的班级正在考试"%self)
School.Examination("alex")

查看类属性:

查看类属性的两种方式:

  1. dir(类名) 查出的是一个名字列表
  2. 类名.__dict__ 查出的是一个字典,key是属性名,value是属性值

#注意:类名加点调用自己的属性实际上就是到属性字典里去找东西

class School:
Teacher = "老王"
def Examination(self):
print("%s的班级正在考试"%self)
print(dir(School)) #查看类的属性
print(School.__dict__) #查看类的属性字典
print(School.Teacher)#同print(School.__dict__["Teacher"]) 调用数据属性
School.Examination("alex")#同School.__dict__["Examination"]("alex") 调用函数属性

特殊的类属性:

class School:
"""
文档
"""
Teacher = "老王"
def Examination(self):
print("%s的班级正在考试"%self)
print(School.__name__) #查看类名
print(School.__doc__) #查看文档
print(School.__base__) #查看类的第一个父类
print(School.__bases__) #查看类所有父类构成的元组
print(School.__dict__) #查看类的属性
print(School.__module__) #查看类所在哪个模块
print(School.__class__) #实例School对应的类(仅新式类中)

对象相关知识

对象是由类实例化而来,实例化结果成为一个实例或者称作一个对象

实例化:

class School:
"""
文档
"""
Teacher = "老王"
def Examination(self):
print("%s的班级正在考试"%self)
School() #类名加上括号就是实例化(可以理解函数运行的返回值就是一个实例)

实例属性:

class School:
"""
这是一个学校类
"""
dang = "dang"
#实例化,init函数不可以有返回值,返回值为空
def __init__(self,name,addr,type):
self.mingzi = name #p1.mingzi = name
self.dizhi = addr #p1.dizhi = addr
self.leixing = type#p1.leixing = type
#考试
def Examination(self):
print("%s正在考试"%self.mingzi)
#招生
def Recruit_students(self):
print("%s正在招生"%self.mingzi)
person = School("oldboy","沙河","私立")
person.Examination()
"""
1、实例化的过程本质上就是调用__init__的运行
2、self就是实例本身=person
3、class会自动帮__init__返回值
4、实例只有数据属性,print(person.__dict__)
5、实例调用函数属性,实际上调用的是类的函数属性,person.Examination()
6、print(person.dang)跟函数作用域一样,在自己的作用域找不到会去上一层找
7、类有数据属性和函数属性,实例只有数据属性
8、实例调用函数属性.class会帮你把实例本身传给函数
"""

最新文章

  1. Linux环境下shell和vim中乱码原因及消除办法
  2. MVC和MVP的区别
  3. WPScan用法
  4. SpringMVC文件上传实现
  5. SqlSever基础 rtrim函数 除去字符串的右边的空格,左边中间的不管
  6. 一点ASP.NET MVC Html.Helper类的方法
  7. [原]Unity3D深入浅出 - 常见三维软件与Unity3D的单位比例
  8. Codeforces Round #232 (Div. 1)
  9. .Net设计模式_建造者模式
  10. Cogs 1008. 贪婪大陆(树状数组)
  11. li浮动引起ul高度坍陷的解决方法
  12. KVO 的使用和举例
  13. 【安卓手机通用】android adb shell 命令大全
  14. 安装Android的SDK
  15. CentOS 安装Python3.x常见问题
  16. H5——while循环,for循环
  17. EFCore Owned Entity Types,彩蛋乎?鸡肋乎?之彩蛋篇
  18. Sql Server中的nvarchar(n)、varchar(n) 和Mysql中的char(n)、varchar(n)
  19. Entity Framework Code First(Mysql)
  20. Lerning Entity Framework 6 ------ A demo of using Entity framework with MySql

热门文章

  1. 64 求1+2+3+...+n(发散思维能力 )
  2. HDU2188 - 悼念512汶川大地震遇难同胞——选拔志愿者【巴什博弈】
  3. 【模板】 最大流模板(ISAP)
  4. centos7把编译安装的服务通过systemctl管理
  5. Hadoop分布环境搭建步骤,及自带MapReduce单词计数程序实现
  6. Statement对象sql注入漏洞的问题
  7. ZOJ 3229 Shoot the Bullet
  8. FFT卷积相加模板
  9. 干货:鲜为人用的MySQL高级特性与玩法!
  10. rabbitMQ学习笔记(二) 简单的发送与接收消息 HelloWorld