python之类与对象的属性
2024-08-27 16:24:42
类相关的知识
在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")
查看类属性:
查看类属性的两种方式:
- dir(类名) 查出的是一个名字列表
- 类名.__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会帮你把实例本身传给函数
"""
最新文章
- Linux环境下shell和vim中乱码原因及消除办法
- MVC和MVP的区别
- WPScan用法
- SpringMVC文件上传实现
- SqlSever基础 rtrim函数 除去字符串的右边的空格,左边中间的不管
- 一点ASP.NET MVC Html.Helper类的方法
- [原]Unity3D深入浅出 - 常见三维软件与Unity3D的单位比例
- Codeforces Round #232 (Div. 1)
- .Net设计模式_建造者模式
- Cogs 1008. 贪婪大陆(树状数组)
- li浮动引起ul高度坍陷的解决方法
- KVO 的使用和举例
- 【安卓手机通用】android adb shell 命令大全
- 安装Android的SDK
- CentOS 安装Python3.x常见问题
- H5——while循环,for循环
- EFCore Owned Entity Types,彩蛋乎?鸡肋乎?之彩蛋篇
- Sql Server中的nvarchar(n)、varchar(n) 和Mysql中的char(n)、varchar(n)
- Entity Framework Code First(Mysql)
- Lerning Entity Framework 6 ------ A demo of using Entity framework with MySql
热门文章
- 64 求1+2+3+...+n(发散思维能力 )
- HDU2188 - 悼念512汶川大地震遇难同胞——选拔志愿者【巴什博弈】
- 【模板】 最大流模板(ISAP)
- centos7把编译安装的服务通过systemctl管理
- Hadoop分布环境搭建步骤,及自带MapReduce单词计数程序实现
- Statement对象sql注入漏洞的问题
- ZOJ 3229 Shoot the Bullet
- FFT卷积相加模板
- 干货:鲜为人用的MySQL高级特性与玩法!
- rabbitMQ学习笔记(二) 简单的发送与接收消息 HelloWorld