符合中小企业对网站设计、功能常规化式的企业展示型网站建设
本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...
商城网站建设因基本功能的需求不同费用上面也有很大的差别...
手机微信网站开发、微信官网、微信商城网站...
类属性与实例属性
类属性就是类对象所拥有的属性,它被所有类对象的实例对象所共有,在内存中只存在
一个副本。
在前面的例子中我们接触到的就是实例属性(对象属性),它不被所有类对象的实
例对象所共有,在内存中的副本个数取决于对象个数。
创新互联主营崆峒网站建设的网络公司,主营网站建设方案,手机APP定制开发,崆峒h5重庆小程序开发公司搭建,崆峒网站营销推广欢迎崆峒等地区企业咨询
import random
class Turtle(object):
# power是类属性。
power = 100
def __init__(self):
# x,y:实例属性.
self.x = random.randint(0, 10)
self.y = random.randint(0, 10)
#1). 类属性不管有多少个对象, 都只存储一份。 实例属性存储的个数取决于实例的个数.
#2). 作用域不同:
# 类属性: 通过类名/对象名来访问
# 实例属性: 只能通过对象名来访问。
print(Turtle.power)
turtle1 = Turtle()
print(turtle1.power, turtle1.x, turtle1.y)
类方法与静态方法类方法是类对象所拥有的方法,需要用修饰器一般以@classmethod来标识其为类方法,
br/>类方法是类对象所拥有的方法,需要用修饰器一般以@classmethod来标识其为类方法,
(cls是形参, 可以修改为其它变量名,但最好用'cls'了)
2). 能够通过实例对象和类对象去访问。类方法与静态方法
静态方法需要用修饰器一般以@staticmethod来标识其为静态方法,
br/>类方法与静态方法
静态方法需要用修饰器一般以@staticmethod来标识其为静态方法,
2). 能够通过实例对象和类对象去访问。
"""
1). @classmethod: 类方法
2). @staticmethod:静态方法
"""
import random
class Turtle(object):
def __init__(self):
# x,y:实例属性.
self.x = random.randint(0, 10)
self.y = random.randint(0, 10)
self.power = 100
#默认情况下, Python解释器会自动将对象传递给类里面定义的方法。
def eat(self):
print("self: ", self)
self.power += 20
@classmethod
def cls_example(cls):
print("cls: ", cls)
@staticmethod
def static_example():
print("静态方法.......")
turtle = Turtle()
turtle.eat()
turtle.cls_example()
turtle.static_example()
#类方法能够通过实例对象和类对象去访问。
Turtle.cls_example()
#静态方法能够通过实例对象和类对象去访问。
Turtle.static_example()
import time
''''''
#系统自带date类的使用
from datetime import date
dateObj = date(2019, 10, 10)
print(dateObj)
print(date.today())
"""
class Date(object):
def __init__(self, year, month, day):
self.year = year
self.month = month
self.day = day
def __str__(self):
return "%s-%s-%d" % (self.year, self.month, self.day)
@classmethod
def today(cls):
"""
返回当前的日期对象
cls: 类名称Date
:return: Date实例化的对象名称
"""
#获取当前的时间, 返回的是命名元组的格式
#time.struct_time(tm_year=2019, tm_mon=12, tm_mday=29, tm_hour=16, tm_min=49, tm_sec=32, tm_wday=6, tm_yday=363, tm_isdst=0)
now = time.localtime()
return cls(now.tm_year, now.tm_mon, now.tm_mday)
def is_leap(self):
"""
判断是否为闰年?
一个闰年就是能被4整除但是不能被100整除 或者 year能被400整除.
:return:
"""
return (self.year % 4 == 0 and self.year % 100 != 0) or (self.year % 400 == 0)
if __name__ == '__main__':
# 获取当前日期, today是当前日期对象。
today = Date.today()
#打印日期对象, 返回字符串'2019-12-29', 因为有__str__魔术方法。
print(today)
#判断是否为闰年?
print("今年是否为闰年? ", today.is_leap())
#dateObj = Date(2019, 10, 10)
#print(dateObj)
property类属性
什么是property属性?
一种用起来像是使用的实例属性一样的特殊属性,可以对应于类的某个方法。
property属性的定义和调用要注意一下几点:
from datetime import date
class Date(object):
def __init__(self, year, month, day):
self.__year = year
self.__month = month
self.__day = day
#功能一: 将类方法转换成类属性
#应用场景: 某个属性只能访问不能修改时使用。
@property
def year(self):
return self.__year
@property
def month(self):
return self.__month
@property
def day(self):
return self.__day
def __str__(self):
return "%s-%s-%d" % (self.__year, self.__month, self.__day)
if __name__ == '__main__':
dateObj = Date(2019, 12, 12)
print(dateObj.day)
"""
# 08_property类属性.py
from datetime import date
class Date(object):
def __init__(self, year, month, day):
self.__year = year
self.__month = month
self.__day = day
#功能一: 将类方法转换成类属性
#应用场景: 某个属性只能访问不能修改时使用。
@property
def year(self):
return self.__year
@property
def month(self):
return self.__month
@property
def day(self):
return self.__day
def __str__(self):
return "%s-%s-%d" % (self.__year, self.__month, self.__day)
if __name__ == '__main__':
dateObj = Date(2019, 12, 12)
print(dateObj.day)