#coding:utf-8
class People(
object):
# __init__()这个初始化函数,会在对象被创建时自动执行函数的调用,不需要手动调用
__init__()函数。
# __init__()函数在类型不是必须要定义的,当需要声明属性时,必须通过__init__()
函数声明。
def __init__(
self, name, age, height, weight):
# self.name/self.age/self.weight/self.height: 属性
self.name = name
self.age = age
self.height = height
self.weight = weight
print '---------------------------'
# 类中定义的函数,第一个参数必须是固定的self。self的值由解释器自动传值。self后
面定义我们需要的参数。
def get_all_info(
self):
# 因为函数内部可能会使用到一些属性。
print self.name,
self.age,
self.height,
self.weight
def show(
self):
print self.name,
self.age,
self.height,
self.weight
# 当创建对象p1时,会自动执行对象的初始化函数__init__(),并给初始化函数传递参数,传
参数时注意:
# 参数中包含一个隐含的实参,会赋值给__init__()函数中的self形参。
p1 = People(
'张三',
30,
170,
80)
# 属性:用于保存一个对象的数据。
# 函数:用于操作一个对象的数据。
p2 = People(
'李四',
23,
180,
60)
# 面向对象编程:不管是操作类中属性也好,还是操作类中的函数,都必须通过对象完成调用。
# 语法要求:对象名.属性名或者对象名.函数名()
print p2.name
p2.get_all_info()
print p1.name
# 关于对象的创建过程:
# 每次通过People()类创建对象时,Python的解释器都会给该对象分配一个单独的内存空间,
将People类中定义的属性复制一份存放到对象的内存中用于保存。同时,内存具有唯一性的特点,
所以每一个对象的内存地址都是唯一的,不允许重复。
# 虽然所有People类的对象,都有name/age/weight/height属性,但是每一个对象的属性名
都是在各自的内存中的,而不是共用的同一个属性名。
# 面向对象编程同时也支持给对象动态添加属性的操作。
class Student(
object):
pass
# 先创建对象
s1 = Student()
print s1
s2 = Student()
print type(s2)
# 对象名.属性名: 如果在=号的左侧,是在给属性赋值,如果在=号的右侧,是在获取属性的值。
s1.name =
'张三'
s1.age =
20
res = s1.name
res1 = s1.age
print res,res1
print s2.name