1.类是描述具有相同特性特征的一类物体,这些物体具有的属性和功能共性;
类包括:属性,方法;
定义一个class类名(基类);
如果没有基类,一般我们使用选择扩展自object类;
是否继承object是新式类和旧式类的区别,3.0以后默认都继承object,所以我们简单点, 全部继承object;
类是一个概念,不足以承担任务。
2.由类构造出来的实例对象--类的实例
类的实例 : 实例=类名+()
xiaoming,xiaohong分别指向了person类的实例对象
xiaoming = person()
xiaohong = oerson()
3.类的成员函数
(1)类可以有自己的函数 -->类的成员函数
(2)类的成员函数与普通函数的区别:
--类的成员函数的第一个参数必须是self
--调用方式不同 类的实例.成员函数名称(参数)
--在成员函数调用的时候,python解释器会把对象实例隐式的传给self
(3)类的成员函数是一个全局的函数,全局唯一,不会随着类的实例化而出现多个
(4)@property修饰的方法或成员函数
--方法必须只能有self参数,不能有其它
--方法调用的时候不可以写()
4.实例的成员变量
(1)类的实例有一个字典对象,用来保存key,value
(2)可以在类的成员函数里面使用self.key来访问和存储类的实例的成员变量
(3)外部直接可以使用对象的实例.数据成员来取得数据成员的值
5.dir函数,列出全部xx
(1)不带参数时,返回当前范围内的变量,方法和定义的类型列表
(2)带参数时,返回参数的属性,方法列表
(3)dir(类的实例)里面有一个dict的字典,原来存的都是类实例的数据成员
class person(object):
def init_person(self,age,name,sex): #类定义的块
self.age = age #类的成员函数是定义在类的这个快里面
self.name = name #定义在类里的成员函数,第一个参数必须是self
self.sex = sex
print(self.name) #是在对象实例的一个字典里面存放的key,value
print("HelloWorld2") #使用 self.key的名字来进行存储访问
@property #定义的时候必须只能有self参数
def get_age(self): #(2)调用的时候不要传递任何参数,且不能写()
pass
xiaohong = person() #新建一个符合这个类的标准的一个类的示例对象
xiaoming = person() #xiaoming,xiaohong分别指向了person类的实例对象
xiaohong.init_person(10,"xiaohong","girl") #调用成员函数,完成具体的事情,
xiaoming.init_person(10,"xiaoming","boy") #类的成员函数调用的时候,不用传self参数
调用@property
xiaohong.get_age
小红有小红的迷名字,年级,性别
不能和小明共用
print xiaohong.name
dir 列出全部xxx
print (dir())
print (dir(xiaoming))
print(xiaohong.dict)
print(xiaoming.dict)
运行后输出:
xiaohong
HelloWorld2
xiaoming
HelloWorld2
xiaohong
['builtins', 'doc', 'file', 'name', 'package', 'person', 'xiaohong', 'xiaoming']
['class', 'delattr', 'dict', 'doc', 'format', 'getattribute', 'hash', 'init', 'module', 'new', 'reduce', 'reduce_ex', 'repr', 'setattr', 'sizeof', 'str', 'subclasshook', 'weakref', 'age', 'get_age', 'init_person', 'name', 'sex']
{'age': 10, 'name': 'xiaohong', 'sex': 'girl'}
{'age': 10, 'name': 'xiaoming', 'sex': 'boy'}