Python基础18 面向对象(1)面向对象设计、类和对象的基础知识

一、面向对象设计

(1)将一类事物的数据(数据属性)和方法(函数属性)整合在一起的程序设计方法。
(2)对象:由类生成的,将数据和方法整合在一起的、具体的数据结构。
(3)类:将同类对象,抽象出共同的数据和方法,然后将其封装在一起,形成的数据结构。
(4)面向对象编程:用面向对象编程独有的语法class,去实现面向设计
(5)实例化:由类产生对象的过程。
(6)对象也叫实例

二、类和对象的基础知识

1、类的创建和实例化

一般类名首字母要大写,采用驼峰命名法。
例:

class Chinese:
    '这是一个中国人的类'
    pass

#实例化
p1 = Chinese()
# 注:类定义中的代码在类被定义时会被执行,而不是在类实例化时才执行。
a=10

class Chinese:
    print(a)    # 10

2、类的属性调用

类的属性又叫静态属性

class Chinese:
    '这是一个中国人的类'
    name = 'xixi'

    def eat():
        print("吃饭!")

#数据属性调用
print(Chinese.name)  # xixi
#函数属性调用
Chinese.eat()  # 吃饭!

3、关键字class的作用

(1)在定义类的时候,不用写class 类名(参数),直接写class 类名 即可。在实例化的时候,实参可以直接传递给 __init__ 方法,并运行 __init__ 方法。且 __init__ 方法不用写return语句,自动return初始化字典。
(2)类不用写return语句,实例化时,自动return一个字典( __init__ 方法返回的初始化字典)。
(3)实例化时,自动向类的__init__方法的第一个参数传递实例本身,通常形参为self

4、类(对象)的内置属性

(1)__dict__ 类(对象)的属性字典
类名.属性 本质上就是在查看属性字典。不要修改底层的属性字典。

class Chinese:
    '这是一个中国人的类'
    name = 'xixi'

    def eat():
        print("吃饭!")


print(dir(Chinese))
print(Chinese.__dict__['name']) #xixi
print(Chinese.name)             #xixi
Chinese.__dict__['eat']()   #吃饭!
Chinese.eat()               #吃饭!

(2)__name__ 类名

print(Chinese.__name__) #Chinese

(3)__doc__ 文档字符串

print(Chinese.__doc__) #这是一个中国人的类

(4)__module__ 类(对象)所在模块名

print(Chinese.__module__) #__main__

(5)__class__ 实例对应的类

p1 = Chinese()
print(p1.__class__) #<class '__main__.Chinese'>

5、对象属性的调用

(1)调用语法同类的属性调用
(2)规则:先查找对象的属性字典,即__init__方法中定义的属性。对象的属性字典没有,再去查找类的属性字典。
(3)一般对象的属性字典中只定义数据属性,函数属性放在类的属性字典中。
(4)实例在调用类的方法时,会自动向方法的第一个参数传递实例本身。

class Chinese:
    '这是一个中国人的类'

    def __init__(self, name):
        self.name = name

    def eat(self):
        print("%s吃饭!" % self.name)


p1 = Chinese('xixi')
p1.eat()  # xixi吃饭!

(5)在类内部定义的属性为类的属性,在__init__方法中定义的属性,为对象的属性。在__init__方法中使用的变量与类属性同名(非对象调用属性),也不会取它的值。

c = 1
class Chinese:
    '这是一个中国人的类'

    def __init__(self, name):
        print(c)
        self.name = name

    c = 2

    def eat_food(self):
        print("%s吃饭!" % self.name)

p1 = Chinese("xixi")    # 1
print(p1.c)     # 2

6、类的属性的增删改查

class Chinese:
    '这是一个中国人的类'

    def __init__(self, name):
        self.name = name

    gender = "male"

    def eat_food(self):
        print("%s吃饭!" % self.name)


# 查看
print(Chinese.gender)  # male
# 修改
Chinese.gender = "f"
print(Chinese.gender)  # f
# 添加
Chinese.age = 18
# 删除
del Chinese.age

7、实例属性的增删改查

class Chinese:
    '这是一个中国人的类'

    def __init__(self, name):
        self.name = name

    gender = "male"

    def eat_food(self):
        print("%s吃饭!" % self.name)


p1 = Chinese("xixi")
print(p1.__dict__)  # {'name': 'xixi'}
# 查看
print(p1.name)  # xixi
# 修改
p1.name = "haha"
print(p1.__dict__)  # {'name': 'haha'}
# 添加
p1.age = 18
print(p1.__dict__)  # {'name': 'haha', 'age': 18}
# 删除
del p1.age
print(p1.__dict__)  # {'name': 'haha'}
  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值