python-类

1、类是一个独立存放 变量的空间

注:每个实例都是一个独立的变量空间。不同实例之间的空间互不可见

运算符“.”—用于进行变量空间的计算

class Person:
	pass
p1 = Person()
p2 = Person()
p1.var = '在实例中封装的变量'
print(p1.var)
print(Person.var)  #类中找不到,不回去找实例中的
print(p2.var)   #p2也没有,去找Person也没有

2.类与实例之间的关系

类:是实物的抽象,不是真实存在的,描绘了该类事物的共性。如:动物、植物

实例:某类实物的具体个体,是该类实物及具体表现,他是真实存在的。如:小明,小红

3.实例方法表示的是实例的行为

调用过程

​ 通常,将默认会传入的那个参数命名为self,用来表示调用这个方法的实例对象本身。

​ 方法总是定义在类中,但是却叫"实例方法",因为它表示该类所有实例所共有的行为。

4.–init__

它会在实例化之后自动被调用,以完成实例的初始化。

orange = cat()

这时已经将orange进行初始化

5.类的定义

# 面向过程编程:程序按照流程一步步往下走
tu = ('fei', 18, 160)
di = {'name': 'sophia', 'age': 20, 'height': 165}

print(dict(zip(di.keys(), tu)))  # {'name': 'fei', 'age': 18, 'height': 160}
print(tuple(di.values()))   # ('sophia', 20, 165)


# 面向函数编程:将不同的功能设置成不同的函数,在需要的时候随时调用
def func(tu, di):
    return dict(zip(di.keys(), tu)), tuple(di.values())


x, y = func(tu, di)
print(x)
print(y)

# 面向对象编程:类
# 一切事物皆为对象
# 面向对象最重要的概念是类(class)和实例(instance)

在这里插入图片描述

类的定义

class Cat:
    """这是一个猫类"""

# class 关键字
# Cat 类名 大驼峰命名法
# """这是一个猫类""" 解释类的用途

实例化对象

orange = Cat()

6.类属性

# 实例属性
# 类属性
# 私有属性
# 初始化
# __   __
# __init__, 实例化之后自动被调用,完成实例的初始化


class Cat:
    """这是一个猫类"""
    def __init__(self, color, eat):
        self.color = color  # 实例属性:记录是具体对象的特征
        self.eat = eat
        print("内部调用:", self.color)   # 内部调用:需要加上self


kitty = Cat('white', 'milk')    # kitty, 'white', 'milk'
print(kitty.color)

orange = Cat('orange', 'food')  # orange, 'orange', 'food'
print(orange.eat)   # 外部调用:实例名.属性


# 类属性:记录与类相关的特征
# 在__init__外初始化的
class Cat:
    """这是一个猫类"""
    count = 0   # 类属性

    def __init__(self, color, eat):
        self.color = color  # 实例属性:记录是具体对象的特征
        self.eat = eat
        # 计数
        Cat.count += 1  # 内部调用:类名.类属性名


# 实例化对象
kitty = Cat('white', 'milk')
orange = Cat('orange', 'food')
hua = Cat('hua', 'fish')

# 输出创建对象的个数
print("现在创建了{}只猫".format(Cat.count))    # 外部调用:类名.类属性名
print(kitty.count)  # 外部调用:实例名.类属性名


# 总结
"""
实例可以访问实例属性,实例可以访问类属性
类只能访问类属性
"""

# 3.私有属性
# a.单下划线开头:只是告诉别人这是私有属性,外部依然可以访问更改
# b.双下划线开头:外部不能通过实例名(instancename).属性名(propetyname)来访问或者更改


class Cat:
    def __init__(self, color, eat):
        self._color = color
        self.__eat = eat


kitty = Cat('white', 'milk')
print(kitty._color)
# print(kitty.__eat)

7.类方法

# 类和函数
class Cat:
    """这是一个猫类"""
    def __init__(self, color, age):
        self.color = color
        self.age = age


kitty = Cat("white", 2)
hua = Cat("hua", 1)

# 以上部分,我们实现了:1.创建了Cat类 2.实例化了两个对象kitty&hua


# 接下来,我们来创建一个函数,实现上面两只猫猫的年龄求和后的新属性,给第三只猫
def add_cat(name, c1, c2):
    cat = Cat(name, c1.age + c2.age)
    return cat


yellow = add_cat("yellow", kitty, hua)
print(yellow.age)

red = add_cat("red", kitty, yellow)
print(red.age)


# 方法:和某个特定的类相关联的函数
# 函数--->方法:只需要将函数的定义移动到类的定义中即可
class Cat:
    """这是一个猫类"""
    def __init__(self, color, age):
        self.color = color
        self.age = age

    def print_cat(self):
        print("{}-{}".format(self.color, self.age))


kitty = Cat("white", 2)
hua = Cat("hua", 1)

# print_cat调用
Cat.print_cat(kitty)

kitty.print_cat()

# 封装:self指向对象,在对象中封装数据,对类进行优化的方法,就叫封装


class Cat:
    """这是一个猫类"""
    count = 0   # 类属性

    def __init__(self, name, color, eat, age):
        self.eat = eat
        self.name = name    # 实例属性
        self._color = color  # 外部可访问私有属性
        self.__age = age    # 外部不可访问私有属性
        Cat.count += 1  # 内部调用:类名.类属性名

    def print_cat(self):
        print("{}-{}-{}".format(self._color, self.__age, self.name))

    def __get_none(self):
        # 私有方法,不可以被实例和类直接调用
        return "我是私有方法"

    def test(self):
        self.__get_none()


kitty = Cat('kitty', 'white', 'milk', 2)
print(kitty.eat)
print(Cat.count)
print(kitty.count)

kitty.print_cat()
# kitty.__get_none()

如果想获取更多有关python的信息,和想玩python制作的小程序,可以关注微信公众号(dreamspy)。我们一起用python改变世界,一起用python创造梦想。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值