이 글의 내용은 Python3의 클래스와 객체에 대한 이해에 대한 것입니다.(코드 예제) 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
클래스란 무엇인가요?
클래스란 일반적으로 유사한 다수의 개인이 모여 공통된 특성을 지닌 것들을 지칭하는 추상적인 개념입니다. 예를 들어, 클래스는 자동차
이고 이 자동차에는 다양한 모델이 포함되어 있습니다.
객체란 무엇입니까
클래스의 특정 항목입니다. 예를 들어, Wuling Shenche S(코너링 시 GTR을 몇 초 만에 죽인다는 농담이 아직도 기억에 생생합니다)는 자동차 클래스의 구현입니다.
먼저 클래스가 있고 그 다음에는 객체가 있습니다
클래스와 객체 이해하기
def eating(): print("吃草") def walking(): print("走路") eating() walking() #(输出) 吃饭 走路 #这样的话,别人也可以调用你写的函数,但是调用eating() 并不能清除的了解到到底是谁 “吃饭”, #所以我们输入一个name来明确是谁在吃草。 def eating(name): print(name,"吃饭") eating("zhuozi") #调用函数 #(输出)zhuozi 吃草
#그런데 zhuozi를 먹다 쓰는 것이 논리적으로 부적절하다는 걸 알게 되실 겁니다. 비록 문법적으로는 괜찮지만,
# 그래서 "먹는다"라는 범주를 하나의 범주, 즉 하나의 범주로 나누어 보겠습니다. , 그래서 우리는 표시됩니다, class Person:
#Python의 내장 함수 클래스와 구별하기 위해 대문자 P를 사용하는 이유 내장 클래스 이름은 모두 소문자입니다(ctrl + 왼쪽 마우스를 클릭할 수 있습니다). 내장 함수의 버튼을 눌러 확인하세요)
class Person: #这样我们就将eating封装到了Person这个类里面 #只要是Person这一类别的都可以进行下面的行为(eating) def eating(name): print(name,"吃饭") zhangsan = Person() #这里就不能像以前一样用eating去调用了,因为只有Person这一类的才能就行eating这个行为 #所以我们就要先将zhansan定义为Person这一类 zhangsan.eating() #然后才能让张三进行吃草这种行为 #(输出)<__main__.Person object at 0x000001D2CCC21160> 吃饭 lisi = Person() #lisi也要吃饭,那继续定义lisi 是person 类 他可以吃饭 lisi.eating() #lisi就可以吃饭了 #(输出)<__main__.Person object at 0x000001BCC6BF1198> 吃饭 #打印的一个地址,一个类的地址 object(翻译就是对象)就表示 lisi是这个类的对象 #lisi 就是 Person这个类 实例化的对象。
We def before eating(name): 이름은 누가 식사하고 있는지 알 수 있으며 여기서 문법의 엄격한 요구 사항은 self를 사용하여 식사를 부르고 있는 사람을 나타내는 것입니다. 그래서 다음과 같습니다:
class Person: def eating(self): print(self,"吃饭")
class Person: pass ======== list 这里我们ctrl + 鼠标左键点击pycharm 里面书写的list,如图:
내장 함수의 클래스 이름은 모두 소문자이며 이전에 사용한 클래스(목록 이름).append()는 클래스 아래에 있는 함수의 호출임을 알 수 있습니다. 우리는 지금 대괄호에 대해 이야기하고 있습니다. 내부에는 개체 이름 self가 있고 목록 이름은 인스턴스화된 개체입니다.
class 类名(父类列表): #类名和变量名称的命名是一样的,类名首字母要大写, #用来区别是否是内置函数自带的类 类体 数据属性 #类的共同属性,名字,性别,干什么的,等等 方法属性 #这个类共同都有的功能,跑,跳,计算,记录等等
class Person: pass zhangsan = Person() #张三是Person实例化的对象,所以要开辟一个内存来存储, #即将zhangsan变量名指向这个内存地址 print(zhangsan) #(输出)<__main__.Person object at 0x00000194D8D28400> 既然实例化对象后开辟了内存,我们就要在里面进行一个存储
class Person: pass zhangsan = Person() zhangsan.name = "zhangsan" #给这个实例化的对象附一个名字 print(zhangsan) #(输出)<__main__.Person object at 0x0000018DF6598400> print(zhangsan.name) #打印出这个对象的名字 #(输出)zhangsan zhangsan对象名 指向 内存,内存里面有一个属性name,而name指向zhangsan这个名字 两个zhngsan 不一样啊 zhangsan(类的对象名字) -- 》内存 (name)----》zhangsan(对象的属性) lisi = Person() #再实例化一个对象 lisi.name = "xiaolong" print(lisi.name) print(id(lisi.name)) lisi = Person() lisi.name = "xiaolong" print(id(zhangsan)) #(输出)2070146453856 print(lisi.name) #(输出)xiaolong print(id(lisi.name)) #(输出)2070146521264인스턴스화된 두 객체의 ID가 다르다는 것을 알 수 있습니다
여기 네임스페이스 규칙이 있습니다.
객체가 인스턴스화될 때마다 특별한 처리가 수행되지 않으면 시스템을 차지하게 됩니다. 메모리 저장.
class Person: pass zhangsan = Person() zhangsan.name = "zhangsan" zhangsan.sex = "男" zhangsan.age = 19 zhangsan.hight = 175 lisi = Person() lisi .name = "xiaolong" lisi .sex = "女" lisi .age = 29 lisi .hight = 170 #两个内容的创建方式相同啊,只是内容不同,那么我们写一个函数来进行这种重复性的操作,
class Person: def __init__(self, name, sex, age, hight): self.name = name zhangsan.name = name self.sex = sex zhangsan.name = sex self.age = age zhangsan.name = age self.hight = hight zhangsan.name = hight #self 是为了规范明确是谁调用了,所以相当于将zhangsan这个对象传给了self。 #而后面self之后的name, sex, age, hight 就是所要传入的"zhangsan" "男"19 175 信息 #zhangsan = Person() #zhangsan.name = "zhangsan" #zhangsan.sex = "男" #zhangsan.age = 19 #zhangsan.hight = 175 这样我们就不用再像上面一样传入了 zhangsan = Person("zhangsan","男","19",175) print(zhangsan.name) #(输出)zhangsan
init: 시스템에 존재하는 특수 함수입니다(zhangsan = Person("zhangsan","male","19",175)). 기본 인스턴스화 개체는 이것을 호출합니다. 기능. def init(self, name, sex, age, hight):
self 개체 이름은 등호 앞의 zhangsan이고,
name, sex, age, hight는 "zhangsan", "male", "19"에 해당합니다. , 175
위 내용은 Python3의 클래스 및 객체 이해(코드 예제)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!