这里有很多还不明白,慢慢把这些搞清楚
类(class)的定义:用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。编写类时,我们赋予它一些通用行为,基于类来创建对象,我们就可以让每个对象都拥有这些通用行为,然后根据需要再赋予每个对象独特的个性。
对象是类的实例,根据类来创建一个对象,称为实例化。
比如我们需要创建一个橘猫类,那么我们需要思考它们的共性,比如它们的毛色、花纹以及吃得很多等等,这是我们在类中描述的相同属性。现在我需要创建出一只叫胖胖、3岁、家养的橘猫,这个精确的对象,就是实例。
例如:整数类型(int)是一个类,其中20、100、2等整数属于int类型中的对象
类的创建:
一般类的名由一个或多个单词组成,首字母大写,其余小写
class Solution: #Solution是类名
pass #这里应该放类中的主题内容
类的组成内容:
类属性:在类里定义的变量
公有属性:既可以在类的内部使用,又可以在类外部使用。 私有属性:私有属性,使用双下划线开头。私有属性,只能在类的内部使用,在类外面无法使用。
class Method:
name='lily' #公有属性,可在类外使用
__name='jim' #双下划线,私有属性,只能在类内使用
print(name)
print(__name)
print(Method.name)
print(Method.__name) #在类外使用私有属性的类属性,就会报错
显示:AttributeError:
type object 'Method' has no attribute '__name'. Did you mean: 'name'?
构造方法
每次根据类来创建新实例的时候,python都会自动运行它
其中self形参必不可少,而且必须在第一位。因为我们python调用__init__方法创建实例的时候,将自动传入实参self,每个与类相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。
因此我们创建实例的时候,只需要给name,age的值,不需要给self,因为self自动传递
self.name,以self为前缀的变量可供类中的所有方法使用,我们可以通过任何实例访问这些变量
self.name=name是获取存储在形参name中的值,再将这个值赋给变量name,然后这个变量name被关联到当前实例中
像self.name这样能被实例访问的变量,称为属性
def __init__(self,name,age):
self.name=name
self.age=age
#self.name称为实体属性,进行了赋值的操作,将局部变量的name的值赋给实体属性
实例方法:
def eat(self): #实例方法
print('eating...')
#在类之外定义的称为函数,类之内定义的称为方法
静态方法(静态方法不写self):
使用@staticmethod修饰
@staticmethod
def method():
print('使用staticmethod进行修饰,所以是静态方法')
类方法(cls):
使用@classmethod修饰
@classmethod
def cm(cls):
print('classmethod修饰,是类方法')



