python---对象、继承和类方法学习

在学习任何的编程语言的过程中,对象、属性、类、继承都是我们必不可少的。

如国这一阶段没有打好基础,后面去无论是做题还是进行实战都会感觉很吃力。

所以从今天开始,我们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)

总结:任何一种类型的方法 都可以用类或者对象来调用

什么时候使用对象方法,什么使用使用类方法和静态方法

1)在绝大部分情况下我们的方法都会声明成 对象方法

2)如果我们希望用类来处理这个方法,或者不希望某一个属性值不因为对象而改变的时候 就可以用类方法

3)静态方法的使用绝大部分都可以用实例方法或者类方法来替代

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值