对象和类
python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象。。。。。。
我们通过描述属性(特征)和行为来描述一个对象的。比如家里的小狗,它的颜色,大小,年龄,体重等是它的属性或特征。它会汪汪叫,会摇尾巴等是它的行为。
我们在描述一个真实对象(物体)时包括两个方面:
它可以做什么(行为)
它是什么样的(属性或特征)。
在python中,一个对象的特征也称为属性(attribute)。它所具有的行为也称为方法(method)
结论:对象=属性(特征)+方法(行为)
类:在python中,把具有相同属性和方法的对象归为一个类(class)
比如人类,动物,植物等等,这些都是类的概念。
类是对象的模板或蓝图,类是对象的抽象化,对象是类的实例化。类不代表具体的事物,而对象表示具体的事物。
class people: #people是类名
#方法
def speak(self): #self相当于this指针
print('hello!')
a=people() #创建a实例(对象)
a.speak() #引用speak方法
#得到:'hello!'
a.age=22 #添加age属性
a.height=180 #添加height属性
a.age
a.height
#得到22 180
初始化对象
创建类时,可以定义一个特定的方法,名为__init__(),只要创建这个类的一个实例就会运行这个方法。可以向__init__()方法传递参数,这样创建对象时就可以把属性设置为你希望的值。__init__()这个方法会在创建对象时完成初始化
class people:
def __init__(self,name,age,sex):
self.Name=name
self.Age=age
self.Sex=sex
def speak(self):
print('my name'+self.Name)
#实例化这个对象
zhangsan=people('张三',24,'男')
print(zhangsan.Age)
print(zhangsan.Name)
print(zhangsan.Sex)
#得到:24 '张三' '男'
'''
如果直接print(zhangsan)会得到
<__main__.people object at 0x02351290>
要让print能打印出来,就得使用__str__方法 __str__()这个方法告诉python在打印(print)一个对象时,具体显示什么内容
使用方法如下
'''
class people:
def __init__(self,name,age,sex):
self.Name=name
self.Age=age
self.Sex=sex
def speak(self):
print('my name'+self.Name)
def __str__(self):
msg=('my name is: ' +self.Name+ ","+ "my age is: " + self.Age +','+ "my sex is:" +self.Sex)
return msg
zhangsan=prople('张三','22','男')
print(zhangsna)
#得到:my name is: shanghai,my age is: 23,my sex is:man
#此处22是年龄,但被转成了字符串,因为self.Age定义的是字符串 如果不将23转义,则会报错,如果希望在程序中事先转义,需使用str(self.Age)