一、类和对象的概念
二
1、类的定义
class 类名:
属性
方法
例:
class Dog:
kind="金毛"
def eat(self):
print("吃的是狗粮!!!")
def run(self):
print("跑得很快!!!")
def swim(self):
print("会狗刨!!!")
2、创建对象
对象名 = 类名()
my_dog = Dog()
① 查看对象的属性
对象名.属性
my_dog.kind
② 查看对象的方法
对象名.方法()
my_dog.run()
3、在创建对象的同时,可以个性化的定制对象的属性。
初始化:魔法函数 __init__
在创建对象的同时,自动化调用。
在类当中可有可无。
实例化的同时,自动调用__ init__
. __ init__
有几个参数,那在实例化时,就要传几个。
class Dog:
def __init__(self,kind,color,name):
self.kind = kind
self.color = color
self.name = name
def eat(self):
print("吃的是狗粮!!!")
def run(self):
print("跑得很快!!!")
def swim(self):
print("会狗刨!!!")
my_dog = Dog("哈士奇","黑色","二哈")
print(my_dog.kind)
my_dog.run()
self: 对象本身。
实例方法:第一个参数是self
- 类属性:直接在类当中定义的。不在任何的实例方法当中。
- 类方法:函数加上@classmethod参数默认为cls. cls表示类本身。
可以通过cls访问类的属性,但是不能访问实例属性。
类可以访问,对象可以访问。
- 实例属性: self. 属性名
- 实例方法:参数第一个是self
实例都是可以访问类属性,类方法的。
只有实例才可以访问。
4、静态方法(自动化测试基本不会用到,了解即可)
(1) 在类定义内部,使用@staticmethod修饰
(2)与类无任何关联,就是一个普通函数,放在类当中方便管理
(3) 参数无self,cls
(4)类/实例均可访问
问题一、类属性和实例属性重名了,对象访问属性时,是访问类和还是实例自己的? ?
自己有,先用自己的。自己没有,才去用类的。
问题二、在类定义当中,实例方法可以调用其它实例方法吗?
可以。
问题三、在类定义时,在实例方法当中,可以给对象设置属性吗? (不在_ init_ 函数中的属性)
可以
问题四、类中方法的参数,可以是其它类的实例对象吗?
可以