在学习任何的编程语言的过程中,对象、属性、类、继承都是我们必不可少的。
如国这一阶段没有打好基础,后面去无论是做题还是进行实战都会感觉很吃力。
所以从今天开始,我们python学习开始由简入深,初步进入深入阶段。所以,我们进入正题。
1.对象和类认识和基础应用
计算机语言分为 机器语言、汇编语言、高级语言
高级语言: 1:面向过程的语言 C ,注重方法实现的过程
2:面向对象的语言 java ,oc ,C++ ,c# ,python 注重谁来执行的方法
类和对象 可以看做成 群体 个体
例如:一类人 ,A级车 中国人 ; 小A 宝骏560豫A66666 热巴
class 类 Poeple 类名 ()里面为继承的对象
object 对象;物体 object相当于祖类
对象 有两部分1.属性 名字 性别 身高 体重;2.方法 sleep eat cry coding
# 类相当于模板 对象相当于用模板生成的产品
class People(object):
# 类 属性
name = ''
sex = False
age = 0
height = ''
weight = ''
def eat(self):
print('人类出生就会吃东西')
def sleep(self):
print('人类天生会睡觉')
def work(self):
print('每个人都有劳动的权利')
# 创建一个对象 叫做p
p = People()
list= list()
dic = dict()
p.name = '小王'
p.age = 17
p.sex = False
p.height = 176
p.weight = '69kg'
People.name
print(p.height)
p.eat()
p.sleep()
p.work()
class People(object):
# init 初始化 魔术方法的一种 用来初始化对象
#_init_()方法会自动调用 在创建对象的时候
# init里面的属性 叫做对象属性
def __init__(self , name , age , sex):
# 将后面的值赋予自己的self.XX属性
self.name = name
self.age = age
self.sex = sex
def study(self):
print('只有学习才能使我感到快乐')
# 在创建对象的时候 直接赋值
p = People('小明',17,True)
print(p.name)
p.study()
小练习:
# 1.男生女生都属于人类,有身高,性别,年龄,姓名等属性
# 2.创建一个男生,叫张生,包括其他一些属性
# 3.创建一个女生,叫崔莺莺,包括其他一些属性
# 4.女生来判别男生,如果是男的,年龄相差不超过5岁,身上没有负债
# class Animal(object):
# def __init__(self,sex,age,money):
# self.sex = sex
# self.age = age
# self.money = money
class Human(object):
def __init__(self,name='',age=0,sex=False,height=120 , money=0):
self.name = name
self.age = age
self.sex = sex
self.height = height
self.money = money
def isFitMe(self , other):
if self.sex == other.sex :
print('同性相斥')
return
if self.age - other.age > 5 or self.age - other.age < -5:
print('年龄不合适')
return
if other.money < 0 :
print('无身可依')
return
print('喜结良缘')
cuiYingYing = Human('崔莺莺',12,False ,165 ,100000)
zhangSheng = Human('张生',14,True,175,-1000)
# tiger = Animal(True , 10 , 0)
cuiYingYing.isFitMe(zhangSheng)
对象总结:
对象属性不能通过类名+属性的方式来调用 只能通过对象来调用
类属性可以通过类名+属性的方式来调用 也可以通过对象来调用
对象方法可以通过对象 + 方法名 这种形式类调用
也可以通过类名 + 方法名,然后将对象当成参数传入方法中这种形式来调用
2.私有属性
对象属性中,凡是带下划线的_,都是不希望外部使用(道德上)
但是并不是说我们完全不能使用
如果加的单下划线_ ,可以通过 p1._name = 'xiaozhang'这种方式使用
如果加的是双下划线,可以通过p1._People__name这种当时使用
class People(object):
def __init__(self , name='' ,sex='' ,age='16' ,fond='学习'):
self.name = name
self._sex = sex
self.__age = age
self.__fond = fond
# get set方法
@property
def fond(self):
print('fond被get了')
return self.__fond
fond.setter
def fond(self , fond):
print('fond被set了')
self.__fond = fond
p = People()
p.name = '张三'
print(p.name)
p._sex = '男'
# __age
print(p._People__age)
# set
str = '123123123123'
# get
str1 = str
# p.fond = '开车'
print(p.fond('开车'))
# 如果有这个属性 则修改属性值
# 如果没有这个属性 则添加
p.girlFriend = '小美'
print(p.girlFriend)
p.__age = '17'
print(p.__age)
# dic = {}
# dic['name'] = 'zhangsan'
3.继承的使用
# 子类继承于父类
# 子类会有父类的属性和方法
# 子类也可以重写父类的属性和方法
# 子类也可以拥有自己独有的属性和方法
class People(object):
def __init__(self,age='',sex=''):
self.age = age
self.sex = sex
def eat(self):
print('人类为吃而活')
def breath(self):
print('美国的空气如此香甜')
class Man(People):
def __init__(self,age ='',sex='',huZi='' ):
# 继承父类已有的属性
super(Man,self).__init__(age ,sex )
self.huZi = huZi
def smoke(self):
print('吸烟有害健康')
def eat(self):
# 继承父类的eat方法
super(Man ,self).eat()
print('上面这句话是继承自people的,正在说的这句话才是我自己的')
# class Boy(Man):
# def __init__(self):
# pass
m = Man()
print(m.age)
m.smoke()
m.eat()
面向对象编程的三特点:
1)封装 :函数
2)继承 : 子类继承父类
3)多态 : 不同对象调用同样方法 出现不用结果 就是多态
class A(object):
def say(self):
print('my name is A')
class B(A):
def say(self):
print('my name is B')
class C(A):
def say(self):
print('my name is C')
class D(C , B ):
pass
d= D()
d.say()
4.类方法和静态方法
class People(object):
# 类属性
count = 0
size = 0
def __init__(self,name='',age=''):
# 对象属性
self.name = name
self.age = age
# 对象方法
def say(self):
print('hai')
# class 类 method 方法
@classmethod
# cls class
def classFun(cls):
print('Hello ,我是类方法')
# static 静态 method方法
@staticmethod
# 不需要指定self或者cls来调用
def method():
print('我是静态方法')
People.classFun()
People.method()
p1 = People()
p1.classFun()
p1.method()
p1.say()
People.say(p1)