python学习 day016打卡 面向对象--成员
2018-11-09 02:38:23来源:博客园 阅读 ()
本节主要内容:
1.类的成员
2.类的成员-变量
3.类的成员-方法
4.类的成员-属性
5.私有
一.类的成员:
能在类中写的内容就是类的成员.
class 类名: #方法 def __init__(self,参数1,参数2,...): #属性变量 self.属性1 = 参数1 self.属性2 = 参数2 ... #方法 def method(self): pass
在上面的代码中__init__和method都属于类的成员方法.又称为实例方法.总之这样的东西需要对象来访问.
而上方的self.属性1 = 参数1 这个代码的含义是给对象设置属性信息.含义是这个对象的xxx属性是xxx.这种
东西被称为成员变量或者实例变量,再或者被称为字段.
二.类的成员-变量
在类中变量分成两大类:
1.实例变量(字段)
2.类变量(静态变量)
class Person: country = "中国" #类变量 def __init__(self,name, age): self.name = name #实例变量 self.age = age # Person.country = "大清" # print(Person.country) # 直接使用类名进行访问 p1 = Person("alex", 185) p1.country = "大清" # 添加了一个实例变量 print(p1.name) print(p1.country) p2 = Person("wusir", 145) print(p2.name) print(p2.country) # 类变量的修改只能通过类
总结:
实例变量,给对象用的.
类变量,多个对象共享的.最好是用类名来访问,这样更加规范.
二.类的成员-方法
1.成员方法(实例方法)
2.静态方法
3.类方法
成员方法:对象直接访问的方法叫成员方法
class Car: def run(self): print("会跑的车") def cul(self, a, b): return a + b def jump(self): print("you jump i jump") c = Car() c.run() # 调用实例方法 print(c.cul(1 , 3)) c.jump()
静态方法.静态方法不需要我们给方法传递self.也就是说.当出现一个方法不需要使用到成员变量的时候,就可以选择使用静态方法.
静态方法需要我们在方法上面添加一个@staticmethod
class Person: def chi(self): # 实例方法 print("人在吃") # 类方法 @classmethod # 类方法 def he(cls): # cls 类 print(cls) print("我是喝") @staticmethod def shui(): # 在类中定义的一个普通函数 print("和你睡不等于睡你 -- 姜文") @staticmethod def 上天(height): # 在类中定义的一个普通函数 print("上天%s" % height) print(Person) Person.he() p = Person() p.he() # 不管用对象还是用类去访问类方法. 默认传递进去的是类 Person.shui() Person.上天(500) p = Person() p.shui()
静态方法和静态变量一样.一般都是使用类名直接访问和调用的.
类方法.类方法和静态方法差不多,只不过类方法需要在参数列表中的第一个位置预留一个位置,通常我们给第一个参数起名字叫cls.
类方法在被调用的时候也不需要传递实例对象.但是系统会自动的吧类传递给第一个参数.类方法在编写的时候需要在类方法上面添
加@classmethod
三.类的成员-属性
属性其实就是通过方法改造过来的一种变量的写法,在方法上添加一个@property就可以了
class User: def __init__(self,name,birthday,id): self.name = name self.birthday = birthday self.id = id @property # 可以把一个方法变成一个属性 def age(self): return 2018 - self.birthday u = User("wsx",1988,100) print(u.age)
应用场景:我们一般保存数据的时候,不会保存一个人的年龄.因为随着时间的推移.每个人的年龄都时刻在改变着.那如何保存更加完美呢?
很简单.保存出生年月日.然后用程序来计算当前的年龄.实时的.这个时候需要进行相应的计算了.二计算属于一个功能.当然要写在方法里.
但是对于年龄这个属性而言,他就是一个数值,而不是动作,所以python就提供了这样一种机制,通过方法来描述一个属性.
注意:
1.方法参数只能有一个self
2.方法上方要写@property
3.调用的时候,我们不需要写括号.直接当成属性变量来用就可以了.
4.这种套路只可以取值,不能设置值
四.私有
在python中,一般是不提倡设置和使用私有信息的.但有些场景,我们不得不这么做.
在python中使用__作为方法或者变量的前缀,name这个方法或者变量就是私有的
class Person: def __init__(self,laopo,mimi): self__laopo = laopo self__mimi = mimi alex = Person("wusir","他俩搞基") print(alex.__mimi) #私有的,访问不到.报错
程序报错,私有的内容是访问不到的,但是,这个访问不到是有一定的局限性的.比如:
class Person: def __init__(self,laopo,mimi): self.__laopo = laopo self.__mimi = mimi def gaosuni(self): print("大喇叭开始广播了") return self.__mimi #私有的内容,在类的内部,可以任意进行使用 alex = Person("wusir","他俩搞基") mimi = alex.gaosuni() # 通过一个非私有的方法,访问到了私有内容 print(mimi)
记住,私有的内容不能直接访问.但是如果对方开辟了外界访问的通道(公共方法).那可以通过这个公共的方法来获取私有的内容.
这样做的好处是,外界只能看,凡是改不了.
不单单实例变量有私有的,类变量(静态变量)一样拥有这样的属性.
2.私有方法.
私有方法,顾名思义,只能自己访问的方法,别人都不能随便调用的
class Person: def __init__(self, name): # 构造, 创建对象的时候自动调用 self.__name = name # 私有的 print("这里是构造方法") def init(self): print("实例方法") def __chi(self): # 私有的 print("我要吃. 疯狂的吃") def he(self): self.__chi() # 内部调用 print("我是喝", self.__name) p = Person("孙艺珍") p.he()
__chi是一个私有的方法,只能在类中自己调用,类外面不能访问.
同样的.私有方法也是相对而言的,我们可以通过其他方法来访问到这样的方法.
关于类方法和静态方法,和成员方法一样,
需要注意的是,对于私有的内容而言.子类是无法继承的
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:万物互联之~网络编程上篇
下一篇:类成员
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash