Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Python Object
Search
Stephen Finucane
July 12, 2016
Technology
0
19
Python Object
How objects work in Python. A talk I gave to OSIC members, October 2015.
Stephen Finucane
July 12, 2016
Tweet
Share
More Decks by Stephen Finucane
See All by Stephen Finucane
Zero-downtime upgrades with SQLAlchemy + Alembic
stephenfin
0
460
OpenStack from 10,000ft
stephenfin
0
98
Teaching padawans to chop wood and carry water in their open source journey
stephenfin
0
150
What is Nova?
stephenfin
0
240
A Documentation-Driven Approach to Building APIs
stephenfin
0
140
A Lion, a Head, and a Dash of YAML (PyCon Limerick 2020)
stephenfin
0
210
Will Someone *Please* Tell Me What's Going On?
stephenfin
1
210
Trading Flexibility for Performance: The HPC Story in OpenStack
stephenfin
0
250
Working with Documentation, The OpenStack Way
stephenfin
0
210
Other Decks in Technology
See All in Technology
一生覚えておきたい「システム開発=コミュニケーション」〜初めての実務案件振り返りLT〜
maimyyym
0
130
開発パフォーマンスを最大化するための開発体制
ham0215
2
310
アクセシビリティを考慮したUI/CSSフレームワーク・ライブラリ選定
yajihum
2
1k
Delivering Millions of Messages within seconds @ Duolingo
pelelgrino
0
350
テストプロセスで大事にしていること #jasstnano
makky_tyuyan
0
170
現代CSSフレームワークの内部実装とその仕組み
poteboy
8
3.6k
Postman v10リリース後を振り返る / Looking back at Postman v10 after release
yokawasa
1
160
MapLibreとAmazon Location Service
dayjournal
1
150
日本におけるデータエンジニアリングのこれまでとこれから
foursue
16
4.2k
地理空間データ可視化・解析・活用ソリューション Pacific Spatial Solutions (PSS)
pacificspatialsolutions
0
180
SPI原点回帰論:事業課題とFour Keysの結節点を見出す実践的ソフトウェアプロセス改善 / DevOpsDays Tokyo 2024
visional_engineering_and_design
4
1.9k
NgRx Signal Store
rainerhahnekamp
0
150
Featured
See All Featured
Robots, Beer and Maslow
schacon
PRO
155
7.9k
The Brand Is Dead. Long Live the Brand.
mthomps
49
28k
Automating Front-end Workflow
addyosmani
1356
200k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
30
6k
Visualization
eitanlees
136
14k
How to Ace a Technical Interview
jacobian
272
22k
Fontdeck: Realign not Redesign
paulrobertlloyd
76
4.9k
Web Components: a chance to create the future
zenorocha
305
41k
Designing the Hi-DPI Web
ddemaree
276
33k
Fashionably flexible responsive web design (full day workshop)
malarkey
398
65k
Producing Creativity
orderedlist
PRO
337
39k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
221
21k
Transcript
Stephen Finucane Software Developer, OpenStack Team Intel Shannon
What is Object Orientated design, and why do we care?
What is an object?
Know Java, and know Python is not Java These slides
compare the two, assuming Java knowledge for fair comparison. Don’t try to write Python like Java, though.
None
class MyClass(object): def __init__(self, *args, **kwargs): pass def do_stuff(self): print('doing
stuff') >> instance = MyClass() >> instance.do_stuff() doing stuff classes.py: An example of classes in Python
class MyClass(object): def __init__(self, *args, **kwargs): pass def do_stuff(self): print('doing
stuff')
object is Python being explicit You don’t need it in
Python 2, but you should use it to get “new style classes”
self is also Python being explicit Think of it like
the ‘this’ keyword in Java
public class MyClass { String name; ... public void setName(String
name) { this.name = name; } } MyClass.java: The ‘this’ keyword
class MyClass(object): name = None ... def set_name(self, name): self.name
= name self._example.py: The ‘self’ keyword
None
public class MyClass { public MyClass(String name) { ... }
public MyClass(String name, int age) { ... } } MyClass.java: Constructors in Java
class MyClass(object): def __init__(name, age=None): ... constructors.py: Constructors in Python
public class MyClass { public void display() { System.out.println("Hello, world!");
} } public class MySubClass extends MyClass { public void display() { System.out.println("Testing 123"); } } MyClass.java, MySubClass.java: Inheritance in Java
class MyClass(object) { def display(self): print('Hello world') class MySubClass(MyClass): def
display(self): print('Testing 123') constructors.py: Constructors in Python
public class MySubClass extends MyClass { public void display() {
super.display(); System.out.println("Testing 123"); } } MyClass.java, MySubClass.java: Inheritance in Java
class MySubClass(MyClass): def display(self): super(MySubClass, self).display(self) print('Testing 123') superclasses.py: Accessing
the Super Class
None
public interface Animal { public void eat(); public void travel();
} public class Mammal implements Animal { public void eat() { System.out.println("Mammal eats"); ... Animal.java, Mammal.java: Interfaces in Java
class Mammal: def eat(self): print('Mammal eats') ... class Reptile: def
eat(self): print('Reptile eats') ... animals.py: Duck Typing in Python
None
>> stephens_boat = Boat(...) >> ankurs_boat = Boat(...) >> stephens_boat
> ankurs_boat True The data model in practice
class Boat(object): """Model a boat.""" length = 0 color =
None def __init__(self, length, color): ... def __gt__(self, other): return self.length > other.length: boat.py: Using the data model
__lt__ - less than __le__ - less than or equal
__eq__ - equal __ne__ - not equal __gt__ - greater than __ge__ - greater than or equal __cmp__ - fallback, if above not implemented boat.py: Using the data model
>>> stephens_boat = Boat(100, 'red') >>> stephens_boat.__doc__ Model a boat.
>>> stephens_boat.__dict__ {'color': 'red', 'length': 100} >>> stephens_boat.__class__ <class '__main__.Boat'> The data model in practice
None
class Person(object): weight_kg = 0 @property def weight_lb(self): return self.weight_kg
* 2.2 @weight_lb.setter def weight_lb(self, value): self.weight_kg = value / 2.2 boat.py: Using the data model
None
• https://docs.python.org/2/tutorial/classes.html • https://en.wikipedia.org/wiki/Duck_typing • https://stackoverflow.com/questions/222877/how-to-use-super- in-python • https://docs.python.org/2/reference/datamodel.html