рдкрд╛рдпрдерди рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдирд╛рд▓реЙрдЧреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдЪреМрдерд╛ рднрд╛рдЧред
рдЗрд╕ рднрд╛рдЧ рдореЗрдВ: рдХреНрд▓рд╛рд╕, рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕, рд╕реЗрдЯрд░ рдЧреЗрдЯрд░реНрд╕ рдФрд░ рдХреНрд▓рд╛рд╕ рдкреНрд░реЙрдкрд░реНрдЯреАрдЬ рдХреЗ рд╕рд╛рде рдлрдВрдХреНрд╢рди рддрд░реНрдХ рдмрдирд╛рдирд╛, рдХрд╛рдо рдХрд░рдирд╛ред
рдкрд┐рдЫрд▓реЗ рднрд╛рдЧреЛрдВ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢:
- рднрд╛рдЧ рдПрдХ : рдкреНрд░рдХрд╛рд░ рд░реВрдкрд╛рдВрддрд░рдг, рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░, рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдо, рд╢рдмреНрджрдХреЛрд╖, рд╕реВрдЪрд┐рдпреЛрдВ, рддрд╛рд░, рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрдпреЛрдЬрди рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рддрдХ рдкрд╣реБрдВрдЪред
- рднрд╛рдЧ рджреЛ : JSON, рдирд┐рдпрдорд┐рдд, рдЕрдкрд╡рд╛рдж рддреНрд░реБрдЯрд┐рдпрд╛рдВ
- рднрд╛рдЧ рддреАрди : рдЖрдзреБрдирд┐рдХ рдкрд╛рдпрдерди рдФрд░ рдЬреЗрдПрд╕: рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреИрдЯрд░реНрди (рдПрдл-рд▓рд╛рдЗрдиреНрд╕), рд╕реВрдЪреА рдЕрдирдкреИрдХрд┐рдВрдЧ, рд▓реИрдореНрдмреНрдбрд╛ рдлрд╝рдВрдХреНрд╢рди, рд╕реВрдЪреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ, рдЬрдирд░реЗрдЯрд░, рд╕реЗрдЯред
рдХрд╛рд░реНрдп рддрд░реНрдХ
рдкрд╛рдпрдерди рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реНрдпрд╛рдкрдХ рдЯреВрд▓рдХрд┐рдЯ рд╣реИ - рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╣реИрдВ, рд╕реНрдерд┐рддреАрдп рдФрд░ рдирд╛рдорд┐рдд рддрд░реНрдХреЛрдВ рдХреА рдПрдХ рдЪрд░ рд╕рдВрдЦреНрдпрд╛ ( *args
рдФрд░ **kwargs
)ред
рдЬрдм рдЖрдк рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рди рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЙрд╕ рддрд░реНрдХ рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╡рд╣ рдорд╛рди рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред JS рдореЗрдВ рднреА рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд╣реИред
рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдХреЛ рдкрд╛рдпрдерди рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
from pprint import pprint def report(post_id, reason='not-relevant'): pprint({'post_id': post_id, 'reason': reason}) report(42) report(post_id=24, reason='spam')
рдЬреЗрдПрд╕ рдореЗрдВ, рдЗрд╕реА рддрд░рд╣:
function report(post_id, reason='not-relevant') { console.log({post_id: post_id, reason: reason}); } report(42); report(post_id=24, reason='spam');
рдкрд╛рдпрдерди рдореЗрдВ рд╕реНрдерд┐рддреАрдп рддрд░реНрдХ рдХреЛ *
рдСрдкрд░реЗрдЯрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
from pprint import pprint def add_tags(post_id, *tags): pprint({'post_id': post_id, 'tags': tags}) add_tags(42, 'python', 'javascript', 'django')
рдЬреЗрдПрд╕ рдореЗрдВ, рд╕реНрдерд┐рддреАрдп рддрд░реНрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ...
рдСрдкрд░реЗрдЯрд░:
function add_tags(post_id, ...tags) { console.log({post_id: post_id, tags: tags}); } add_tags(42, 'python', 'javascript', 'django');
рдирд╛рдорд┐рдд рддрд░реНрдХ рдЕрдХреНрд╕рд░ рдкрд╛рдпрдерди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрдм рдЖрдкрдХреЛ рдПрдХ рддрд░реНрдХ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:
from pprint import pprint def create_post(**options): pprint(options) create_post( title='Hello, World!', content='This is our first post.', is_published=True, ) create_post( title='Hello again!', content='This is our second post.', )
рдЬреЗрдПрд╕ рдХреЛ рджрд┐рдП рдЧрдП рддрд░реНрдХреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЛ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ (рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ options
) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
function create_post(options) { console.log(options); } create_post({ 'title': 'Hello, World!', 'content': 'This is our first post.', 'is_published': true }); create_post({ 'title': 'Hello again!', 'content': 'This is our second post.' });
рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо
рдкрд╛рдпрдерди рдПрдХ рд╡рд╕реНрддреБ-рдЙрдиреНрдореБрдЦ рднрд╛рд╖рд╛ рд╣реИред ECMAScript 6 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, JS рдЖрдкрдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЯреНрд░рд┐рдХреНрд╕ рдФрд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рднреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЕрдЬрдЧрд░ред рд╣рдо рдПрдХ рд╡рд░реНрдЧ, рдирд┐рд░реНрдорд╛рддрд╛ рдФрд░ рд╡рд╕реНрддреБ рдХреЗ рд╢рд╛рдмреНрджрд┐рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐ рдмрдирд╛рддреЗ рд╣реИрдВ:
class Post(object): def __init__(self, id, title): self.id = id self.title = title def __str__(self): return self.title post = Post(42, 'Hello, World!') isinstance(post, Post) == True print(post)
JS рдкрд░ рд╕рдорд╛рди рдХрд╛рд░реНрдп:
class Post { constructor (id, title) { this.id = id; this.title = title; } toString() { return this.title; } } post = new Post(42, 'Hello, World!'); post instanceof Post === true; console.log(post.toString());
рдкрд╛рдЗрдерди рдореЗрдВ рджреЛ Article
рдФрд░ Link
рдХреНрд▓рд╛рд╕реЗрд╕ рдмрдирд╛рдПрдВ рдЬреЛ Post
рдХреНрд▓рд╛рд╕ рд╕реЗ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░реЗрдВрдЧреЗред рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ Post
рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рддрд░реАрдХреЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо super
рдлрдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
class Article(Post): def __init__(self, id, title, content): super(Article, self).__init__(id, title) self.content = content class Link(Post): def __init__(self, id, title, url): super(Link, self).__init__(id, title) self.url = url def __str__(self): return '{} ({})'.format( super(Link, self).__str__(), self.url, ) article = Article(1, 'Hello, World!', 'This is my first article.') link = Link(2, 'DjangoTricks', 'https://djangotricks.blogspot.com') isinstance(article, Post) == True isinstance(link, Post) == True print(link)
рдЬреЗрдПрд╕ рдореЗрдВ рдПрдХ рд╣реА рдмрд╛рдд:
class Article extends Post { constructor (id, title, content) { super(id, title); this.content = content; } } class Link extends Post { constructor (id, title, url) { super(id, title); this.url = url; } toString() { return super.toString() + ' (' + this.url + ')'; } } article = new Article(1, 'Hello, World!', 'This is my first article.'); link = new Link(2, 'DjangoTricks', 'https://djangotricks.blogspot.com'); article instanceof Post === true; link instanceof Post === true; console.log(link.toString());
рд╡рд░реНрдЧ рдЧреБрдг: рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░ред
рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ, рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ, рд╡рд┐рдзрд┐рдпрд╛рдБ рдФрд░ рдЧреБрдг рд╣реЛрддреЗ рд╣реИрдВред рдЧреБрдг рдЧреБрдг рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдорд┐рд╢реНрд░рдг рд╣реИрдВред рдЖрдк рдЧреБрдгреЛрдВ рдХреЛ рдЧреБрдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд╣реАрдВ рди рдХрд╣реАрдВ рд╡реЗ рд╡рд┐рд╢реЗрд╖ рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЧреЗрдЯрд░реНрд╕ / рд╕реЗрдЯрд░ рдирд╛рдордХ рд╡рд┐рд╢реЗрд╖ рддрд░реАрдХреЛрдВ рдХреЛ рдХрд╣рддреЗ рд╣реИрдВред
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдкрд╛рдпрдерди рдбреЗрдХреЛрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ slug
рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЧреЗрдЯрд░ рдФрд░ рд╕реЗрдЯрд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдореВрд▓ рддрд░реАрдХрд╛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ:
class Post(object): def __init__(self, id, title): self.id = id self.title = title self._slug = '' @property def slug(self): return self._slug @slug.setter def slug(self, value): self._slug = value post = Post(1, 'Hello, World!') post.slug = 'hello-world' print(post.slug)
рдЬреЗрдПрд╕ рдореЗрдВ, slug
рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рд▓рд┐рдП рдЧреЗрдЯреНрдЯрд░ рдФрд░ рд╕реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
class Post { constructor (id, title) { this.id = id; this.title = title; this._slug = ''; } set slug(value) { this._slug = value; } get slug() { return this._slug; } } post = new Post(1, 'Hello, World!'); post.slug = 'hello-world'; console.log(post.slug);
рдирд┐рд╖реНрдХрд░реНрд╖
- рджреЛрдиреЛрдВ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ, рдЖрдк рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХреЛрдВ рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рджреЛрдиреЛрдВ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ, рдЖрдк рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдирд╛рдорд┐рдд рдпрд╛ рд╕реНрдерд┐рддрд┐ рд╕рдВрдмрдВрдзреА рддрд░реНрдХреЛрдВ рдХреА рдПрдХ рдордирдорд╛рдиреА рд╕рдВрдЦреНрдпрд╛ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рджреЛрдиреЛрдВ рднрд╛рд╖рд╛рдПрдБ рдПрдХ рд╡рд╕реНрддреБ-рдЙрдиреНрдореБрдЦ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкреНрд░рддрд┐рдорд╛рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИрдВред
рдЦреИрд░, рдФрд░ рдЕрдВрдд рдореЗрдВ, рдореВрд▓ рдкреЛрд╕реНрдЯ рдХреЗ рд▓реЗрдЦрдХ рдиреЗ рдкрд┐рдиреНрдХреВрди рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдкрдиреНрджреНрд░рд╣ рд░реБрдкрдпреЗ рдХреЗ рд▓рд┐рдП рд░рдВрдЧреАрди рдзреЛрдЦрд╛ рд╢реАрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдкреАрдбреАрдПрдлрдХреНрдпреВ рд╕реЗ рдЦрд░реАрджрдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХреА ред
рджреАрд╡рд╛рд░ рдкрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ рдФрд░ рд▓рдЯрдХрд╛рдПрдВ рдпрд╛ рдПрдХ рдкреЗрдкрд░ рд╣рд╡рд╛рдИ рдЬрд╣рд╛рдЬ рдмрдирд╛рдПрдВ - рдЖрдк рддрдп рдХрд░рддреЗ рд╣реИрдВ!