目录
实例属性
实例属性是从属于实例对象的属性, 也称为”实例变量”; 他的使用有如下几个要点:
=> 实例属性一般在__init__()方法中通过如下代码定义:
self.实例属性名 = 初始值
=> 在本类的其他实例方法中, 也是通过self进行访问:
self.实例属性名
=> 创建实例对象后, 通过实例对象访问
Obj01 = 类名() #创建对象, 调用__init__()初始化属性
Obj01.实例属性名 = 值 #可以给已有属性赋值, 也可以给新加属性;
实例方法
实例方法是从属于实例对象的方法; 实例方法的定义格式如下:
def 方法名(self [,参数列表]):
函数体
方法调用格式如下:
对象.方法名([实参列表])
要点:
=> 定义实例方法时, 第一参数必须为self; 和前面一样, self指当前的实例对象;
=> 调用实例方法时, 不需要也不能给self传参; self由解释器自动传参;
函数和方法的区别:
=>都是用来完成一个功能的语句块, 本质一样;
=>方法调用时, 通过对象来调用; 方法从属于特定实例对象, 普通函数没有这个特点;
=> 直观上看, 方法定义时需要传self, 函数不需要;
实例对象的方法调用本质:
===> a = Student()
===> a.say_score(60) --------> 解释器翻译: Student.say_score(a,60)
其他操作
=> dir(obj) 可以获得对象的所有属性, 方法
=> obj.__dict__ 对象的属性字典
=> pass 空语句
=> isinstance( 对象,类型 ) 判断”对象”是不是”指定类型”
class NiceStudent:
def __init__(self,name,score):
self.name = name #实例属性
self.score = score
def say_score(self):
print("{0}的分数是: {1}".format(self.name,self.score))
s1 = NiceStudent("张三",99)
print(dir(s1)) #这个对象所有的属性和方法
print(s1.__dict__) #对象的字典属性 {'name': '张三', 'score': 99}
print(isinstance(s1,NiceStudent))#s1这个对象是不是NiceStudent的实例对象
class Woman:
pass #定义一个类,为空,没有意义的类,不影响代码,以后接着写这个类,什么都没有
print(isinstance(s1,Woman))#s1这个对象是不是NiceStudent的实例对象
输出:
D:\wwwroot\pyiteam\venv\Scripts\python.exe D:/wwwroot/pyiteam/mypro_obj/mypy02.py
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'name', 'say_score', 'score']
{'name': '张三', 'score': 99}
True
False
Process finished with exit code 0