python第十节(面向对象1)

面向对象1

面向对象编程
面向对象编程:Object Oriented Programming,简称OOP,是一种程序设计方法。

类与对象


类是抽象的模板,用来描述具有相同属性和方法的对象的集合,比如Animal类。
类名通常采用驼峰式命名方式,尽量让字面意思体现出类的作用。
Pyt使用class关键字来定义类,其基本结构如下:

class 类名:
	def方法名(self,参数):# 行为
	pass
amy = 类名()
amy.方法名(参数)
'''
输出多个同学信息
'''
def stu_info(name,age,gender,addr):
    print(name,age,gender,addr)

stu_info("F.S","12",'male','shanghai')
stu_info("hanhan","12",'male','shanghai')
stu_info("doubi","12",'male','shanghai')

class Students(object):
    def stu_info(name,age,gender,addr):
        print(name,age,gender.addr)
s = Students()
s.stu_info("F.S","12",'male','shanghai')
s.stu_info("hanhan","12",'male','beijing')
s.stu_info("doubi","12",'male','hefei')
'''
# 定义
class类名(object):
    def 方法名(self,参数):
        pass
# 执行
# 类名()
s = Students()  # s为对象(实例化)
s.方法名(参数)
'''

对象
某一个具体事物的存在,在现实世界中可以看得见摸着着的。
在这里插入图片描述
类和对象的区分练习

汽车
奔驰 对象
宝马 对象
大绿狗 对象
水果
香蕉 对象
苹果 对象

类的构成
类(class)由3个部分构成

  • 类的名称:类名
  • 类的属性:一组数据
  • 类的方法:允许对类进行操作的方法

self参数

对象可以将自己的属性(name,age)带给类
在这里插入图片描述

'''
self是什么?
self其实就是对象本身,也就是说当实例化的对象是谁,self就是谁
self形参
'''
# class Students(object):
#     def test(self):
#         print(self)
# Jc = Students()
# print(Jc)
# Jc.test()
# Sige = Students()
# print(Sige)
# Sige.test()

# li = [1,2,3]
# li.append()  # 将对象追加到列表的末尾
'''
对象是否可以将自己的属性(name,age)带给类?
self就是代表当前对象
'''
# class Students(object):
# #     def info(self):
# #         print(self.name,self.age)
# # Sige = Students()
# # Sige.name = 'sige'
# # Sige.age = 31
# # Sige.info()
# # Qian = Students()
# # Qian.name = 'qian'
# # Qian.age = 18
# # Qian.info()
class Students(object):
    def stu_info(self,name):
        print(name,self.age,self.gender,self.addr)
s = Students()
s.age = '18'
s.gender = 'male'
s.addr = 'shanghai'
s.stu_info("F.S")
s.stu_info("hanhan")
s.stu_info("doubi")

构造方法

'''
魔法方法命名:__魔法__() --> 有特殊功能的方法
构造方法__init__():创建对象时,同时通过对象执行这个方法
注意:
1.构造方法 底层封装返回None
2.构造方法当中声明的属性是允许外部调用的
'''
# class Student(object):
#     def __init__(self):
#         print("---1---")
#     def test(self):
#         print("hanhan")
# qian = Student()

class Students(object):
    def __init__(self):
        self.age = '18'
        self.gender = 'male'
        self.addr = 'shanghai'
        # 默认返回值是None
        # return self.age  # TypeError: __init__() should return None, not 'str'
    def stu_info(self,name):
        print(name,self.age,self.gender,self.addr)
    def test(self):
        self.weight = '120'

s = Students()
# print(s)  # 打印出地址
print(s.age)
print(s.gender)
s.stu_info("F.S")
s.stu_info("hanhan")
s.stu_info("doubi")
print(s.weight)  # AttributeError: 'Students'对象没有属性'weight'

str()魔法方法

'''
__str__()
1.return返回值一定要是字符串类型
2.有多个返回值时,注意使用字符串拼接
'''


class Students(object):
    def __init__(self, age, gender, addr):
        self.age = age
        self.gender = gender
        self.addr = addr

    def __str__(self):
        # return self.age  # 报错  __str__ 返回非字符串(类型为int)
        # return self.gender
        # return str(self.age)
        # return str(self.age), self.gender, self.addr  # 报错  __str__ 返回非字符串(类型为tuple)
        # return f'{str(self.age)},{self.gender},{self.addr}'
        return  self.age

s = Students(18, 'male', 'shanghai')
# print(s)
print(s.__str__())  # 跟普通调用方法无区别,不会报错
class People(object):
    def set_age(self, new_age):
        '''
        年龄0-100岁  如果大于100或小于0时就归零
        :return:
        '''
        if new_age > 0 and new_age <= 100:
            self.age = new_age
        else:
            self.age = 0

    def get_age(self):
        return self.age


amy = People()
amy.set_age(20)
print(amy.get_age())

发布了30 篇原创文章 · 获赞 0 · 访问量 695

猜你喜欢

转载自blog.csdn.net/luobofengl/article/details/104211219