python里的面向对象

class Student:
//count = 0 // count变量是一个类变量,它的值将在这个类的所有实例之间共享。你可以在内部类或外部类使用Student.count访问。

//init()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法
def __init __(self,name,age):
self.name = name
self.age = age
Student.count =Student.count + 1
//在类地内部,使用def关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数self,且为第一个参数,叫做实例方法:
def one(self):
print('name:',self.name,'age:',self.age)
print('Zount:',Student.count) //如果在这打印的话,得到的就是0,因为还没有给传参
//下边俩是创建实例对象
st1 = Student('大傻',12)
st2 = Student('二傻',23)
//使用点(.)来访问对象的属性。
st1.one() //name ;大傻,age:12
st2.one() //name ;大傻,age:12
//使用类的名称访问类变量:
print('Zount:',Student.count) //这个打印出来就是2 ,这个Student.count是在st1,st2,传了参数以后就会触发的,

//可以添加,删除,修改类的属性:
st1.name = ‘是是是’ //修改
st1.grade = 343 // 增加
del st1.age //删除age属性
//判断st1中有没有age,有就返回true
bol = hasattr(st1, 'age')
print(bol)

//我们来解释一下实例变量
实例变量(实例属性,对象属性,属性)
def init(self,name,age): # 实例变量要定义在这个函数里,该函数接收的第一个参数是

指针类型

self指针永远指向该类创建出的某个对象 不会随着对象的变化而更改

init函数在调用类创建对象过程中会自行调用执行,不需要手动调用此函数

//我们来说一下定义类方法@classmethod
class Student:
country = 'china'
def init(self):
self.country = 'Ameian'
@classmethod (#装饰器 待我确定到底有啥用)
//通过系统装饰器classmothod声明函数为类方法,类方法中的self指针指向的是类本身
也就意味着类方法只能访问类变量,或类属性,不能访问实例变量,就是不走那个init方法
def say(self):
print('我的国家是:'+self.country)
stu = Student()
stu.say() //我的国家是:china
Student.say() //我的国家是:china

特性:property 属性中的一种

class Student:
def init(self,name):
self._name = name
def hello(self):
return self._name+'hrllp'
st = Student('zhangsan')
print(st._name) san1//zhang
st.hello = 'coiad'
print(st.hello) //coiad
//如果这个时候
class Student:
def init(self,name):
self._name = name
@property
def hello(self):
return self._name+'hrllp'
st = Student('zhangsan')
print(st._name) //zhang
st.hello = 'coiad'
print(st.hello) //就会报错,因为不让修改
//也就是,如果调用特性,则用户只能访问不能设置

  //接下来就解释一下,怎么修改
  //设置器:专门给特性使用,用来修改特性的值
    @姓名.setter

class Student:
def init(self,name):
self._name = name
@property
def hello(self):
return self._name
@hello.setter
def hello(self,num): //这里的num是要改成什么值
if type(num) is int:
self._num = num;
else:
print(‘请输入正值’)
删除器:通过del删除某个特性时,如果定义了删除器,则该操作会执行删除中的代码
@name.deleter
def name(self):
print('不能删')
st = Student('zhangsan')
print(st._name)
stu.name = 122
print(stu.name) //就把特性的值给改了
del stu.name //打印出来不能删

py中的私有化机制:属性名改写,在所有需要私有化的属性前添加俩下划线,则该属性名会变成:类名_属性名
class Student:
def init(self):
self.name = 'sdsdd'
def __say(self):
print(''hello,'+self.name')
stu = Student()
stu._Student__say()

//继承
class A:
def init(self):
self.name = 'zhang'
def say(self):
print('我是父类')
class B(A): # 声明继承关系,在子类名后跟小括号,小括号里是要继承的父类名
# 继承的语法
# 继承关系中init方发的执行逻辑:
# 在子类没有实现inIT方法时,会触发父类中的init执行
# 如果子类实现了init,则只触发子类的init,不会触发父类的
def init(self):
# 手动调用父类的init函数
A.init(self)
print('我是子类的')

def Bsay(self):
    print('我是子类')
# 在子类中腹泻父类中的方法
def say(self):
    A.say(self)
    print('我是腹泻的子女数据')

a = A()

b = B()
b.say()
print(b.name)
//我是子类的
//我是父类
//我是腹泻的子女数据
//zhang

# type() 获取到对象的数据类型(内置数据类型)

print(type(12.34) is int)
class A:
pass
class B(A):
pass
a = A()
print(type(a) is A)

isinstance 用来判断对象和类之间的关系,一般是自定义对象

bol = isinstance(a,A)
print(bol)

issubclass 判断B是否继承自A

bol = issubclass(B,A)
print(bol)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容