Python基础07
类定义,属性和初始化
一、面向过程编程
程序都是从上往下执行
tu = ('原擎', 28, 180)
di = {'name': '靳莉', 'age': 25, 'heighe': 150}
tu1 = tuple(di.values())
print(tu1)
di1 = dict(zip(di.keys(), tu))
print(di1)
这样写缺点代码量非常大
二、函数式编程
代码可以复用随时可调用
def f(a, b):
tu1 = tuple(b.values())
di1 = dict(zip(b.keys(), a))
res = tu1, di1
return res
y = f(tu, di)
print(y)
三、面向对象编程
类:抽象的模板,比如猫类 共性
实例:根据类创建出来的一个个具体的对象 ,拥有相同的标志,但是各自的数据不同。 个性
# 类的定义
class Cat: # 大驼峰命名法:首字母大写
"""
用来解释
"""
# class 关键字
# 实例化对象
kitty = Cat()
hua = Cat()
# 属性:color,eat就是我们kitty和hua对象的属性
# 通过据点法给实例赋值
kitty.color = "white" #实例属性
kitty.eat = "milk"
hua.color = "colorful"
hua.eat = "fish"
1、实例属性:记录的是每一个实例的特征
class Cat:
"""这是一个猫类"""
def __init__(self, color, eat):
self.color = color #实例对象
self.eat = eat
kitty = Cat('white', 'milk')
hua = Cat('colorful', 'fish')
print(kitty.color) #white
2、类属性:记录的是与类相关的特征
class Cat:
"""这是一个猫类"""
count = 0
def __init__(self, color, eat):
self.color = color # 实例属性
self.eat = eat
Cat.count += 1 # 类名.类属性名,内部调用
kitty = Cat('white', 'milk')
hua = Cat('colorful', 'fish')
lucky = Cat('black', 'food')
# 类属性外部调用
print("我现在创建了{}只猫".format(Cat.count)) # 外部调用1:类名.属性名
print(kitty.count) # 外部调用2:实例名.类属性名
print(kitty.color) # 实例调用实例属性
# print(Cat.color) # 类不能调用实例属性
实例可以访问实例属性,实例可以访问类属性
类只能访问类属性
3、私有属性
-
单下划线开头:告诉别人这是私有属性,依然可以使用
-
双下划线开头:外部不能使用
class Cat:
def __init__(self, color, eat, age):
self.color = color
self._eat = eat
self.__age = age
kitty = Cat("white", "milk", 5)
print(kitty.color)
print(kitty._eat)
print(kitty.__age) # 会报错
4、方法
方法就是和某个特定的类相关的函数
- 函数转为方法
class Cat:
"""这是一个猫类"""
def __init__(self, name, color, eat):
self.name = name
self.color = color
self.eat = eat
def add_cat(self):
print("{}-{}-{}".format(self.name, self.color, self.eat))
kitty = Cat("kitty", "white", "milk")
Cat.add_cat(kitty)
kitty.add_cat()
- 私有方法:不可以被实例和类直接调用但是可以通过内部方法来操作
class Cat:
"""这是一个猫类"""
def __init__(self, name, color, eat):
self.name = name
self.color = color
self.eat = eat
def __print_cat(self):
return "我是私有方法"
def add_cat(self):
print("{}-{}-{}".format(self.name, self.color, self.eat))
print(self.__print_cat())
kitty = Cat("kitty", "white", "milk")
Cat.add_cat(kitty)
kitty.add_cat()