类就是拥有相同功能或者相同属性的对象的集合
创建类-用代码来描述你的这个类是拥有那些相同(用函数)和那些相同属性(用变量)的对象的集合
语法:
class 类名:
类的说明文档
类的内容(包含方法和属性)
说明:
a. class -关键字;固定写法
b. 类名 -由程序员自己命名
两个要求:是标识符;不是关键字
规范:见名知意,不适用系统的函数名、类名和模块名;采用驼峰式命名(大驼峰,每个首字母大写)
c. 类的说明文档 - 本质就是多行注释
d.类的内容 - 包含定义在类中的函数(方法)和定义在类中的变量(属性)
方法包括:对象方法、类方法、静态方法
属性包括:类属性、对象属性
user_name PEP8
userName 小驼峰
UserName 大驼峰
"""
"""
对象是通过类来创建的
语法:
类名()
"""
class Dog:
pass
#创建对象
dog1=Dog()
print(dog1)
a.怎么定义:直接定义在类中的函数就是对象方法
b.怎么调用:以'对象.xxx()'的形式来调用
c.特点:自带参数self,调用函数的时候self不需要传参,系统自动将当前对象传给self(谁调用self指向谁)
a.怎么定义: 定义函数前添加装饰器 @classmethod
b.怎么调用:以‘以类名.xxx()’的形式来调用
c.特点:自带参数cls,调用函数的时候cls不需要传参
a.怎么定义:定义函数前添加装饰器:@staticmethod
b.怎么调用:以‘类名.xxx()’的形式来调用
c.特点:没有特点
class A:
def func1(self):
print(f'对象方法')
def func2(self,a,b=2):
print(f'对象方法:a:{a},b:{b}')
#装饰器 类方法
@classmethod
def func3(cls):
print('类方法')
#静态方法
@staticmethod
def func4():
print(f'静态方法')
#创建对象
a1 = A()
#通过对象调用对象方法
a1.func1()
"""a1被传入到self位置"""
a1.func2(200)
a1.func2(12,22)
# 类调用类方法
A.func3()
A.func4()
2.常见的魔法方法
a.__init__:如果类中添加了__init__方法,那么在创建当前类的对象的时候就会自动调用它
b.__repr__:打印类的对象的时候,如果类中添加了__repr__方法,打印类的对象的时候会自动调用这个方法,并且将这个方法对应返回作为打印结果进行打印
修改打印方式,这个打印必须是字符串
class A:
def __init__(self):
print('init方法被调用')
a1=A()
class B:
def __init__(self,n,m):
print(f'n:{n},m:{m}')
class C:
def __repr__(self):
return f'对象:{id(self)}'
b1=B(1,2)
c1=C()
print(c1)
1.类属性:直接类中定义的变量的类属性
怎么使用:以’类名.xxx’的方式使用
什么时候用:如果属性值,不会因为对象不同,就是类属性
2.对象属性
怎么定义:以’self.属性名=属性值‘的形式定义在_ _ init _ _中
怎么使用:以‘对象.xxx’的方式使用
什么时候用:如果属性值,会因为对象不同,就是对象属性
class A:
#a就是类属性
a=10
name='张三'
#x 和 n是对象属性
def __init__(self):
self.x=10
self.n='hello'
#使用类属性
print(A.name)
#使用对象属性
a1=A()
print(a1.x)
class yuan:
pi=3.14 #类属性
def __init__(self,r=0):
self.r=r
#如果对象方法中需要用到对象属性,由self来提供
def area(self):
return yuan.pi*self.r**2
def girth(self):
return 2*yuan.pi*self.r
class Dog:
def __init__(self,name,breed,age=3,gender='母'):
self.name=name
self.age=age
self.gender=gender
self.breed=breed
dog1=Dog('菜菜','土狗')
print(dog1.name)
y1=yuan(2)
print(y1.girth())
语法:
class 类名(父类1,父类2,父类3,..):
类的说明文档
类的内容
注意:定义类的时候没有写父类,那么这个类会默认继承object(基类)
调用父类__init__ 中用super().__init__调用
class A:
m = 100
def __init__(self):
self.n=200
class B(A):
def __init__(self):
super().__init__()
self.p=1000
pass
b1=B()
print(b1.n)
print(b1.p)
其中B是子类